GNU bug report logs - #58310
[PATCH] Add coq-mathcomp-analysis

Previous Next

Package: guix-patches;

Reported by: Garek Dyszel <garekdyszel <at> disroot.org>

Date: Wed, 5 Oct 2022 17:22:02 UTC

Severity: normal

Tags: patch

Full log


View this message in rfc822 format

From: Garek Dyszel <garekdyszel <at> disroot.org>
To: zimoun <zimon.toutoune <at> gmail.com>, 58310 <at> debbugs.gnu.org
Cc: pukkamustard <pukkamustard <at> posteo.net>, Julien Lepiller <julien <at> lepiller.eu>
Subject: [bug#58310] Manifest for coq-mathcomp-analysis
Date: Sat, 12 Nov 2022 18:48:50 -0500
[Message part 1 (text/plain, inline)]
Hi,

CC: ocaml team

I am including a manifest file instead of sending patches for now. It
seems like a good idea to stick with that until these packages are ready
to be put into the Guix source tree. I'm refactoring them too often.

After opening an issue on Github [1] [2], it seems that coq-elpi is the
package that is not building properly. It is clear that ocamlfind (from
ocaml-findlib) can't find coq-elpi after coq-elpi's install phase.
[1]: https://github.com/math-comp/hierarchy-builder/issues/320
[2]: https://github.com/LPCIC/coq-elpi/issues/384

It looks like the META file is not being installed by coq-elpi either.
I'm not sure whether that's relevant, since ocamlfind couldn't find
coq-elpi even when META was present (in a much older revision of this
manifest; I can dig for it but just today don't have time).

The problem seems to be something in the build process itself; if the
extra phase 'check-findlib-path' is omitted then coq-elpi's build is
reported as a success.

The later package coq-mathcomp-hierarchy-builder runs ocamlfind to find
coq-elpi, too.

What would be a way to ensure that coq-elpi is found by ocamlfind? 

Thanks!
Garek

(Manifest attached with an ocaml-elpi patch. You will need to change the path for
the ocaml-elpi (patches) field to match your directory structure, but otherwise
this manifest should work.)

[coq-mathcomp-analysis.scm (application/octet-stream, attachment)]
[ocaml-elpi-fix-yojson.patch (text/x-patch, inline)]
From 998dc654e5acd66d5d0c8ebe79ed04dd424eb698 Mon Sep 17 00:00:00 2001
From: Julien Puydt <julien.puydt <at> gmail.com>
Date: Mon, 24 Oct 2022 11:44:08 +0200
Subject: [PATCH 1/2] Fix for yojson 2.0.2

---
 src/elpi_trace_elaborator.ml          |     6 +-
 tests/sources/broken_trace1.elab.json | 35691 ++++++++----------------
 tests/sources/trace.elab.json         |     3 +-
 tests/sources/trace2.elab.json        |    27 +-
 tests/sources/trace_chr.elab.json     |    90 +-
 tests/sources/trace_findall.elab.json |    12 +-
 6 files changed, 11944 insertions(+), 23885 deletions(-)

diff --git a/src/elpi_trace_elaborator.ml b/src/elpi_trace_elaborator.ml
index 6d3ac0e2..6c07209c 100644
--- a/src/elpi_trace_elaborator.ml
+++ b/src/elpi_trace_elaborator.ml
@@ -664,6 +664,6 @@ let main =
 
   let cards = Trace.cards steps ~stack_frames ~aggregated_goal_success ~goal_text ~goal_attempts in
 
-  let ob = Bi_outbuf.create_channel_writer stdout in
-  write_trace ob cards;
-  Bi_outbuf.flush_channel_writer ob
+  let buf = Buffer.create 1000 in
+  write_trace buf cards;
+  Buffer.output_buffer stdout buf
diff --git a/tests/sources/broken_trace1.elab.json b/tests/sources/broken_trace1.elab.json
index ed59855d..0daa61ab 100644
--- a/tests/sources/broken_trace1.elab.json
+++ b/tests/sources/broken_trace1.elab.json
@@ -5,8 +5,7 @@
     "step": [
       "Init",
       {
-        "goal_text":
-          "attributes\n [attribute elpi.loc \n   (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)] =>\n main\n  [const-decl _ \n    (some\n      (app\n        [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n         global (indc «O»), fun `x` X0 c0 \\ c0])) (arity X1)]",
+        "goal_text": "attributes\n [attribute elpi.loc \n   (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)] =>\n main\n  [const-decl _ \n    (some\n      (app\n        [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n         global (indc «O»), fun `x` X0 c0 \\ c0])) (arity X1)]",
         "goal_id": 1121
       }
     ],
@@ -19,8 +18,7 @@
       "Inference",
       {
         "current_goal_id": 1121,
-        "current_goal_text":
-          "attributes\n [attribute elpi.loc \n   (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)] =>\n main\n  [const-decl _ \n    (some\n      (app\n        [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n         global (indc «O»), fun `x` X0 c0 \\ c0])) (arity X1)]",
+        "current_goal_text": "attributes\n [attribute elpi.loc \n   (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)] =>\n main\n  [const-decl _ \n    (some\n      (app\n        [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n         global (indc «O»), fun `x` X0 c0 \\ c0])) (arity X1)]",
         "current_goal_predicate": "=>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -31,8 +29,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "main\n [const-decl _ \n   (some\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0])) (arity X1)]",
+                "goal_text": "main\n [const-decl _ \n   (some\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0])) (arity X1)]",
                 "goal_id": 1122
               }
             ],
@@ -58,8 +55,7 @@
       "Inference",
       {
         "current_goal_id": 1122,
-        "current_goal_text":
-          "main\n [const-decl _ \n   (some\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0])) (arity X1)]",
+        "current_goal_text": "main\n [const-decl _ \n   (some\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0])) (arity X1)]",
         "current_goal_predicate": "main",
         "failed_attempts": [],
         "successful_attempts": [
@@ -68,8 +64,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                  "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                   "rule_loc": [
                     "File",
                     {
@@ -93,8 +88,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1123 },
               {
-                "goal_text":
-                  "with-attributes\n (with-logging\n   (instance.declare-const _ \n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _))",
+                "goal_text": "with-attributes\n (with-logging\n   (instance.declare-const _ \n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _))",
                 "goal_id": 1124
               }
             ],
@@ -107,8 +101,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -143,13 +136,11 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "main\n [const-decl _ \n   (some\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0])) (arity X1)]",
+              "goal_text": "main\n [const-decl _ \n   (some\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0])) (arity X1)]",
               "goal_id": 1122
             },
             "cut_branch": {
-              "rule_text":
-                "(main [A0, A1]) :- (!), \n (coq.warning HB HB.deprecated \n   The syntax \"HB.instance Key FactoryInstance\" is deprecated, use \"HB.instance Definition\" instead), \n (with-attributes (with-logging (instance.declare-existing A0 A1))).",
+              "rule_text": "(main [A0, A1]) :- (!), \n (coq.warning HB HB.deprecated \n   The syntax \"HB.instance Key FactoryInstance\" is deprecated, use \"HB.instance Definition\" instead), \n (with-attributes (with-logging (instance.declare-existing A0 A1))).",
               "rule_loc": [
                 "File",
                 {
@@ -163,13 +154,11 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "main\n [const-decl _ \n   (some\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0])) (arity X1)]",
+              "goal_text": "main\n [const-decl _ \n   (some\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0])) (arity X1)]",
               "goal_id": 1122
             },
             "cut_branch": {
-              "rule_text":
-                "(main _) :- (coq.error\n              Usage: HB.instance Definition <Name> := <Builder> T ...).",
+              "rule_text": "(main _) :- (coq.error\n              Usage: HB.instance Definition <Name> := <Builder> T ...).",
               "rule_loc": [
                 "File",
                 {
@@ -193,8 +182,7 @@
       "Inference",
       {
         "current_goal_id": 1124,
-        "current_goal_text":
-          "with-attributes\n (with-logging\n   (instance.declare-const _ \n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _))",
+        "current_goal_text": "with-attributes\n (with-logging\n   (instance.declare-const _ \n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _))",
         "current_goal_predicate": "with-attributes",
         "failed_attempts": [],
         "successful_attempts": [
@@ -203,13 +191,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                  "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                       "line": 14,
                       "column": 0,
                       "character": 453
@@ -227,14 +213,12 @@
             "siblings": [
               { "goal_text": "attributes X2", "goal_id": 1125 },
               {
-                "goal_text":
-                  "pi c0 \\\n pi c1 \\\n  pi c2 \\\n   pi c3 \\\n    pi c4 \\\n     pi c5 \\\n      pi c6 \\\n       pi c7 \\\n        parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n         , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n          (supported-attribute (att c7 attmap)) (!) \n          (parse-attributes.aux c2 c3 c5) \n          (pi c8 \\ supported-attribute (att c8 string) :- ! =>\n            parse-attributes.aux c1  c6) \n          (std.append c5 [get-option c7 c6] c4) =>\n coq.parse-attributes X2 \n  [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n   att short.type string, att short.pack string, att infer attmap, \n   att key string, att arg_sort bool, att log bool, att log.raw bool, \n   att compress_coercions bool, att export bool, att skip string, \n   att local bool, att fail bool, att doc string, att primitive_class bool, \n   att primitive bool, att non_forgetful_inheritance bool, att hnf bool] X3",
+                "goal_text": "pi c0 \\\n pi c1 \\\n  pi c2 \\\n   pi c3 \\\n    pi c4 \\\n     pi c5 \\\n      pi c6 \\\n       pi c7 \\\n        parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n         , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n          (supported-attribute (att c7 attmap)) (!) \n          (parse-attributes.aux c2 c3 c5) \n          (pi c8 \\ supported-attribute (att c8 string) :- ! =>\n            parse-attributes.aux c1  c6) \n          (std.append c5 [get-option c7 c6] c4) =>\n coq.parse-attributes X2 \n  [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n   att short.type string, att short.pack string, att infer attmap, \n   att key string, att arg_sort bool, att log bool, att log.raw bool, \n   att compress_coercions bool, att export bool, att skip string, \n   att local bool, att fail bool, att doc string, att primitive_class bool, \n   att primitive bool, att non_forgetful_inheritance bool, att hnf bool] X3",
                 "goal_id": 1126
               },
               { "goal_text": "!", "goal_id": 1127 },
               {
-                "goal_text":
-                  "X3 =>\n (save-docstring ,\n   with-logging\n    (instance.declare-const _ \n      (app\n        [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n         global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _))",
+                "goal_text": "X3 =>\n (save-docstring ,\n   with-logging\n    (instance.declare-const _ \n      (app\n        [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n         global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _))",
                 "goal_id": 1128
               }
             ],
@@ -247,13 +231,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -268,8 +250,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -310,8 +291,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(attributes\n  [attribute elpi.loc \n    (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)]) :- .",
+                  "rule_text": "(attributes\n  [attribute elpi.loc \n    (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)]) :- .",
                   "rule_loc": [ "Context", 1 ]
                 }
               ],
@@ -332,8 +312,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(attributes\n  [attribute elpi.loc \n    (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)]) :- .",
+                "rule_text": "(attributes\n  [attribute elpi.loc \n    (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)]) :- .",
                 "rule_loc": [ "Context", 1 ]
               }
             ],
@@ -344,13 +323,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -365,8 +342,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -398,8 +374,7 @@
       "Inference",
       {
         "current_goal_id": 1126,
-        "current_goal_text":
-          "pi c0 \\\n pi c1 \\\n  pi c2 \\\n   pi c3 \\\n    pi c4 \\\n     pi c5 \\\n      pi c6 \\\n       pi c7 \\\n        parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n         , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n          (supported-attribute (att c7 attmap)) (!) \n          (parse-attributes.aux c2 c3 c5) \n          (pi c8 \\ supported-attribute (att c8 string) :- ! =>\n            parse-attributes.aux c1  c6) \n          (std.append c5 [get-option c7 c6] c4) =>\n coq.parse-attributes\n  [attribute elpi.loc \n    (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)] \n  [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n   att short.type string, att short.pack string, att infer attmap, \n   att key string, att arg_sort bool, att log bool, att log.raw bool, \n   att compress_coercions bool, att export bool, att skip string, \n   att local bool, att fail bool, att doc string, att primitive_class bool, \n   att primitive bool, att non_forgetful_inheritance bool, att hnf bool] X3",
+        "current_goal_text": "pi c0 \\\n pi c1 \\\n  pi c2 \\\n   pi c3 \\\n    pi c4 \\\n     pi c5 \\\n      pi c6 \\\n       pi c7 \\\n        parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n         , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n          (supported-attribute (att c7 attmap)) (!) \n          (parse-attributes.aux c2 c3 c5) \n          (pi c8 \\ supported-attribute (att c8 string) :- ! =>\n            parse-attributes.aux c1  c6) \n          (std.append c5 [get-option c7 c6] c4) =>\n coq.parse-attributes\n  [attribute elpi.loc \n    (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)] \n  [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n   att short.type string, att short.pack string, att infer attmap, \n   att key string, att arg_sort bool, att log bool, att log.raw bool, \n   att compress_coercions bool, att export bool, att skip string, \n   att local bool, att fail bool, att doc string, att primitive_class bool, \n   att primitive bool, att non_forgetful_inheritance bool, att hnf bool] X3",
         "current_goal_predicate": "=>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -410,8 +385,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.parse-attributes\n [attribute elpi.loc \n   (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)] \n [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n  att short.type string, att short.pack string, att infer attmap, \n  att key string, att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] X3",
+                "goal_text": "coq.parse-attributes\n [attribute elpi.loc \n   (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)] \n [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n  att short.type string, att short.pack string, att infer attmap, \n  att key string, att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] X3",
                 "goal_id": 1129
               }
             ],
@@ -429,13 +403,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -450,8 +422,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -483,8 +454,7 @@
       "Inference",
       {
         "current_goal_id": 1129,
-        "current_goal_text":
-          "coq.parse-attributes\n [attribute elpi.loc \n   (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)] \n [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n  att short.type string, att short.pack string, att infer attmap, \n  att key string, att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] X3",
+        "current_goal_text": "coq.parse-attributes\n [attribute elpi.loc \n   (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)] \n [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n  att short.type string, att short.pack string, att infer attmap, \n  att key string, att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] X3",
         "current_goal_predicate": "coq.parse-attributes",
         "failed_attempts": [],
         "successful_attempts": [
@@ -493,8 +463,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                  "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -520,13 +489,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.map\n [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n  att short.type string, att short.pack string, att infer attmap, \n  att key string, att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X4",
+                "goal_text": "std.map\n [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n  att short.type string, att short.pack string, att infer attmap, \n  att key string, att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X4",
                 "goal_id": 1130
               },
               {
-                "goal_text":
-                  "X4 =>\n parse-attributes.aux\n  [attribute elpi.loc \n    (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)]  X3",
+                "goal_text": "X4 =>\n parse-attributes.aux\n  [attribute elpi.loc \n    (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)]  X3",
                 "goal_id": 1131
               },
               { "goal_text": "!", "goal_id": 1132 }
@@ -540,8 +507,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -565,13 +531,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -586,8 +550,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -619,8 +582,7 @@
       "Inference",
       {
         "current_goal_id": 1130,
-        "current_goal_text":
-          "std.map\n [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n  att short.type string, att short.pack string, att infer attmap, \n  att key string, att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X4",
+        "current_goal_text": "std.map\n [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n  att short.type string, att short.pack string, att infer attmap, \n  att key string, att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X4",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -629,8 +591,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -660,8 +621,7 @@
                 "goal_id": 1133
               },
               {
-                "goal_text":
-                  "std.map\n [att mathcomp bool, att mathcomp.axiom string, att short.type string, \n  att short.pack string, att infer attmap, att key string, \n  att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X6",
+                "goal_text": "std.map\n [att mathcomp bool, att mathcomp.axiom string, att short.type string, \n  att short.pack string, att infer attmap, att key string, \n  att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X6",
                 "goal_id": 1134
               }
             ],
@@ -674,8 +634,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -694,8 +653,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -719,13 +677,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -740,8 +696,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -799,8 +754,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -819,8 +773,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -844,13 +797,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -865,8 +816,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -898,8 +848,7 @@
       "Inference",
       {
         "current_goal_id": 1134,
-        "current_goal_text":
-          "std.map\n [att mathcomp bool, att mathcomp.axiom string, att short.type string, \n  att short.pack string, att infer attmap, att key string, \n  att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X6",
+        "current_goal_text": "std.map\n [att mathcomp bool, att mathcomp.axiom string, att short.type string, \n  att short.pack string, att infer attmap, att key string, \n  att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X6",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -908,8 +857,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -939,8 +887,7 @@
                 "goal_id": 1135
               },
               {
-                "goal_text":
-                  "std.map\n [att mathcomp.axiom string, att short.type string, att short.pack string, \n  att infer attmap, att key string, att arg_sort bool, att log bool, \n  att log.raw bool, att compress_coercions bool, att export bool, \n  att skip string, att local bool, att fail bool, att doc string, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X8",
+                "goal_text": "std.map\n [att mathcomp.axiom string, att short.type string, att short.pack string, \n  att infer attmap, att key string, att arg_sort bool, att log bool, \n  att log.raw bool, att compress_coercions bool, att export bool, \n  att skip string, att local bool, att fail bool, att doc string, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X8",
                 "goal_id": 1136
               }
             ],
@@ -953,8 +900,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -973,8 +919,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -993,8 +938,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -1018,13 +962,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -1039,8 +981,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -1098,8 +1039,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -1118,8 +1058,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -1138,8 +1077,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -1163,13 +1101,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -1184,8 +1120,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -1217,8 +1152,7 @@
       "Inference",
       {
         "current_goal_id": 1136,
-        "current_goal_text":
-          "std.map\n [att mathcomp.axiom string, att short.type string, att short.pack string, \n  att infer attmap, att key string, att arg_sort bool, att log bool, \n  att log.raw bool, att compress_coercions bool, att export bool, \n  att skip string, att local bool, att fail bool, att doc string, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X8",
+        "current_goal_text": "std.map\n [att mathcomp.axiom string, att short.type string, att short.pack string, \n  att infer attmap, att key string, att arg_sort bool, att log bool, \n  att log.raw bool, att compress_coercions bool, att export bool, \n  att skip string, att local bool, att fail bool, att doc string, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X8",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -1227,8 +1161,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -1254,13 +1187,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "X9 = supported-attribute (att mathcomp.axiom string)",
+                "goal_text": "X9 = supported-attribute (att mathcomp.axiom string)",
                 "goal_id": 1137
               },
               {
-                "goal_text":
-                  "std.map\n [att short.type string, att short.pack string, att infer attmap, \n  att key string, att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X10",
+                "goal_text": "std.map\n [att short.type string, att short.pack string, att infer attmap, \n  att key string, att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X10",
                 "goal_id": 1138
               }
             ],
@@ -1273,8 +1204,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -1293,8 +1223,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -1313,8 +1242,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -1333,8 +1261,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -1358,13 +1285,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -1379,8 +1304,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -1412,8 +1336,7 @@
       "Inference",
       {
         "current_goal_id": 1137,
-        "current_goal_text":
-          "X9 = supported-attribute (att mathcomp.axiom string)",
+        "current_goal_text": "X9 = supported-attribute (att mathcomp.axiom string)",
         "current_goal_predicate": "=",
         "failed_attempts": [],
         "successful_attempts": [
@@ -1442,8 +1365,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -1462,8 +1384,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -1482,8 +1403,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -1502,8 +1422,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -1527,13 +1446,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -1548,8 +1465,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -1581,8 +1497,7 @@
       "Inference",
       {
         "current_goal_id": 1138,
-        "current_goal_text":
-          "std.map\n [att short.type string, att short.pack string, att infer attmap, \n  att key string, att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X10",
+        "current_goal_text": "std.map\n [att short.type string, att short.pack string, att infer attmap, \n  att key string, att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X10",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -1591,8 +1506,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -1618,13 +1532,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "X11 = supported-attribute (att short.type string)",
+                "goal_text": "X11 = supported-attribute (att short.type string)",
                 "goal_id": 1139
               },
               {
-                "goal_text":
-                  "std.map\n [att short.pack string, att infer attmap, att key string, \n  att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X12",
+                "goal_text": "std.map\n [att short.pack string, att infer attmap, att key string, \n  att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X12",
                 "goal_id": 1140
               }
             ],
@@ -1637,8 +1549,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -1657,8 +1568,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -1677,8 +1587,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -1697,8 +1606,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -1717,8 +1625,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -1742,13 +1649,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -1763,8 +1668,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -1796,8 +1700,7 @@
       "Inference",
       {
         "current_goal_id": 1139,
-        "current_goal_text":
-          "X11 = supported-attribute (att short.type string)",
+        "current_goal_text": "X11 = supported-attribute (att short.type string)",
         "current_goal_predicate": "=",
         "failed_attempts": [],
         "successful_attempts": [
@@ -1826,8 +1729,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -1846,8 +1748,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -1866,8 +1767,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -1886,8 +1786,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -1906,8 +1805,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -1931,13 +1829,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -1952,8 +1848,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -1985,8 +1880,7 @@
       "Inference",
       {
         "current_goal_id": 1140,
-        "current_goal_text":
-          "std.map\n [att short.pack string, att infer attmap, att key string, \n  att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X12",
+        "current_goal_text": "std.map\n [att short.pack string, att infer attmap, att key string, \n  att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X12",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -1995,8 +1889,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -2022,13 +1915,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "X13 = supported-attribute (att short.pack string)",
+                "goal_text": "X13 = supported-attribute (att short.pack string)",
                 "goal_id": 1141
               },
               {
-                "goal_text":
-                  "std.map\n [att infer attmap, att key string, att arg_sort bool, att log bool, \n  att log.raw bool, att compress_coercions bool, att export bool, \n  att skip string, att local bool, att fail bool, att doc string, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X14",
+                "goal_text": "std.map\n [att infer attmap, att key string, att arg_sort bool, att log bool, \n  att log.raw bool, att compress_coercions bool, att export bool, \n  att skip string, att local bool, att fail bool, att doc string, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X14",
                 "goal_id": 1142
               }
             ],
@@ -2041,8 +1932,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2061,8 +1951,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2081,8 +1970,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2101,8 +1989,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2121,8 +2008,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2141,8 +2027,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -2166,13 +2051,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -2187,8 +2070,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -2220,8 +2102,7 @@
       "Inference",
       {
         "current_goal_id": 1141,
-        "current_goal_text":
-          "X13 = supported-attribute (att short.pack string)",
+        "current_goal_text": "X13 = supported-attribute (att short.pack string)",
         "current_goal_predicate": "=",
         "failed_attempts": [],
         "successful_attempts": [
@@ -2250,8 +2131,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2270,8 +2150,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2290,8 +2169,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2310,8 +2188,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2330,8 +2207,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2350,8 +2226,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -2375,13 +2250,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -2396,8 +2269,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -2429,8 +2301,7 @@
       "Inference",
       {
         "current_goal_id": 1142,
-        "current_goal_text":
-          "std.map\n [att infer attmap, att key string, att arg_sort bool, att log bool, \n  att log.raw bool, att compress_coercions bool, att export bool, \n  att skip string, att local bool, att fail bool, att doc string, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X14",
+        "current_goal_text": "std.map\n [att infer attmap, att key string, att arg_sort bool, att log bool, \n  att log.raw bool, att compress_coercions bool, att export bool, \n  att skip string, att local bool, att fail bool, att doc string, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X14",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -2439,8 +2310,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -2470,8 +2340,7 @@
                 "goal_id": 1143
               },
               {
-                "goal_text":
-                  "std.map\n [att key string, att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X16",
+                "goal_text": "std.map\n [att key string, att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X16",
                 "goal_id": 1144
               }
             ],
@@ -2484,8 +2353,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2504,8 +2372,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2524,8 +2391,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2544,8 +2410,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2564,8 +2429,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2584,8 +2448,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2604,8 +2467,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -2629,13 +2491,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -2650,8 +2510,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -2709,8 +2568,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2729,8 +2587,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2749,8 +2606,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2769,8 +2625,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2789,8 +2644,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2809,8 +2663,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2829,8 +2682,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -2854,13 +2706,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -2875,8 +2725,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -2908,8 +2757,7 @@
       "Inference",
       {
         "current_goal_id": 1144,
-        "current_goal_text":
-          "std.map\n [att key string, att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X16",
+        "current_goal_text": "std.map\n [att key string, att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X16",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -2918,8 +2766,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -2949,8 +2796,7 @@
                 "goal_id": 1145
               },
               {
-                "goal_text":
-                  "std.map\n [att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X18",
+                "goal_text": "std.map\n [att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X18",
                 "goal_id": 1146
               }
             ],
@@ -2963,8 +2809,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -2983,8 +2828,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3003,8 +2847,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3023,8 +2866,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3043,8 +2885,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3063,8 +2904,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3083,8 +2923,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3103,8 +2942,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -3128,13 +2966,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -3149,8 +2985,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -3208,8 +3043,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3228,8 +3062,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3248,8 +3081,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3268,8 +3100,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3288,8 +3119,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3308,8 +3138,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3328,8 +3157,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3348,8 +3176,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -3373,13 +3200,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -3394,8 +3219,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -3427,8 +3251,7 @@
       "Inference",
       {
         "current_goal_id": 1146,
-        "current_goal_text":
-          "std.map\n [att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X18",
+        "current_goal_text": "std.map\n [att arg_sort bool, att log bool, att log.raw bool, \n  att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X18",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -3437,8 +3260,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -3468,8 +3290,7 @@
                 "goal_id": 1147
               },
               {
-                "goal_text":
-                  "std.map\n [att log bool, att log.raw bool, att compress_coercions bool, \n  att export bool, att skip string, att local bool, att fail bool, \n  att doc string, att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X20",
+                "goal_text": "std.map\n [att log bool, att log.raw bool, att compress_coercions bool, \n  att export bool, att skip string, att local bool, att fail bool, \n  att doc string, att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X20",
                 "goal_id": 1148
               }
             ],
@@ -3482,8 +3303,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3502,8 +3322,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3522,8 +3341,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3542,8 +3360,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3562,8 +3379,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3582,8 +3398,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3602,8 +3417,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3622,8 +3436,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3642,8 +3455,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -3667,13 +3479,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -3688,8 +3498,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -3749,8 +3558,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3769,8 +3577,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3789,8 +3596,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3809,8 +3615,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3829,8 +3634,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3849,8 +3653,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3869,8 +3672,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3889,8 +3691,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -3909,8 +3710,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -3934,13 +3734,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -3955,8 +3753,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -3988,8 +3785,7 @@
       "Inference",
       {
         "current_goal_id": 1148,
-        "current_goal_text":
-          "std.map\n [att log bool, att log.raw bool, att compress_coercions bool, \n  att export bool, att skip string, att local bool, att fail bool, \n  att doc string, att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X20",
+        "current_goal_text": "std.map\n [att log bool, att log.raw bool, att compress_coercions bool, \n  att export bool, att skip string, att local bool, att fail bool, \n  att doc string, att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X20",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -3998,8 +3794,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -4029,8 +3824,7 @@
                 "goal_id": 1149
               },
               {
-                "goal_text":
-                  "std.map\n [att log.raw bool, att compress_coercions bool, att export bool, \n  att skip string, att local bool, att fail bool, att doc string, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X22",
+                "goal_text": "std.map\n [att log.raw bool, att compress_coercions bool, att export bool, \n  att skip string, att local bool, att fail bool, att doc string, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X22",
                 "goal_id": 1150
               }
             ],
@@ -4043,8 +3837,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4063,8 +3856,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4083,8 +3875,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4103,8 +3894,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4123,8 +3913,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4143,8 +3932,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4163,8 +3951,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4183,8 +3970,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4203,8 +3989,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4223,8 +4008,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -4248,13 +4032,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -4269,8 +4051,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -4328,8 +4109,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4348,8 +4128,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4368,8 +4147,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4388,8 +4166,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4408,8 +4185,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4428,8 +4204,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4448,8 +4223,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4468,8 +4242,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4488,8 +4261,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4508,8 +4280,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -4533,13 +4304,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -4554,8 +4323,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -4587,8 +4355,7 @@
       "Inference",
       {
         "current_goal_id": 1150,
-        "current_goal_text":
-          "std.map\n [att log.raw bool, att compress_coercions bool, att export bool, \n  att skip string, att local bool, att fail bool, att doc string, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X22",
+        "current_goal_text": "std.map\n [att log.raw bool, att compress_coercions bool, att export bool, \n  att skip string, att local bool, att fail bool, att doc string, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X22",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -4597,8 +4364,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -4628,8 +4394,7 @@
                 "goal_id": 1151
               },
               {
-                "goal_text":
-                  "std.map\n [att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X24",
+                "goal_text": "std.map\n [att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X24",
                 "goal_id": 1152
               }
             ],
@@ -4642,8 +4407,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4662,8 +4426,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4682,8 +4445,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4702,8 +4464,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4722,8 +4483,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4742,8 +4502,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4762,8 +4521,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4782,8 +4540,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4802,8 +4559,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4822,8 +4578,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4842,8 +4597,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -4867,13 +4621,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -4888,8 +4640,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -4947,8 +4698,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4967,8 +4717,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -4987,8 +4736,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5007,8 +4755,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5027,8 +4774,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5047,8 +4793,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5067,8 +4812,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5087,8 +4831,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5107,8 +4850,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5127,8 +4869,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5147,8 +4888,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -5172,13 +4912,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -5193,8 +4931,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -5226,8 +4963,7 @@
       "Inference",
       {
         "current_goal_id": 1152,
-        "current_goal_text":
-          "std.map\n [att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X24",
+        "current_goal_text": "std.map\n [att compress_coercions bool, att export bool, att skip string, \n  att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X24",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -5236,8 +4972,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -5263,13 +4998,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "X25 = supported-attribute (att compress_coercions bool)",
+                "goal_text": "X25 = supported-attribute (att compress_coercions bool)",
                 "goal_id": 1153
               },
               {
-                "goal_text":
-                  "std.map\n [att export bool, att skip string, att local bool, att fail bool, \n  att doc string, att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X26",
+                "goal_text": "std.map\n [att export bool, att skip string, att local bool, att fail bool, \n  att doc string, att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X26",
                 "goal_id": 1154
               }
             ],
@@ -5282,8 +5015,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5302,8 +5034,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5322,8 +5053,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5342,8 +5072,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5362,8 +5091,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5382,8 +5110,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5402,8 +5129,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5422,8 +5148,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5442,8 +5167,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5462,8 +5186,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5482,8 +5205,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5502,8 +5224,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -5527,13 +5248,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -5548,8 +5267,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -5581,8 +5299,7 @@
       "Inference",
       {
         "current_goal_id": 1153,
-        "current_goal_text":
-          "X25 = supported-attribute (att compress_coercions bool)",
+        "current_goal_text": "X25 = supported-attribute (att compress_coercions bool)",
         "current_goal_predicate": "=",
         "failed_attempts": [],
         "successful_attempts": [
@@ -5611,8 +5328,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5631,8 +5347,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5651,8 +5366,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5671,8 +5385,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5691,8 +5404,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5711,8 +5423,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5731,8 +5442,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5751,8 +5461,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5771,8 +5480,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5791,8 +5499,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5811,8 +5518,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5831,8 +5537,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -5856,13 +5561,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -5877,8 +5580,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -5910,8 +5612,7 @@
       "Inference",
       {
         "current_goal_id": 1154,
-        "current_goal_text":
-          "std.map\n [att export bool, att skip string, att local bool, att fail bool, \n  att doc string, att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X26",
+        "current_goal_text": "std.map\n [att export bool, att skip string, att local bool, att fail bool, \n  att doc string, att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X26",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -5920,8 +5621,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -5951,8 +5651,7 @@
                 "goal_id": 1155
               },
               {
-                "goal_text":
-                  "std.map\n [att skip string, att local bool, att fail bool, att doc string, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X28",
+                "goal_text": "std.map\n [att skip string, att local bool, att fail bool, att doc string, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X28",
                 "goal_id": 1156
               }
             ],
@@ -5965,8 +5664,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -5985,8 +5683,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6005,8 +5702,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6025,8 +5721,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6045,8 +5740,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6065,8 +5759,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6085,8 +5778,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6105,8 +5797,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6125,8 +5816,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6145,8 +5835,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6165,8 +5854,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6185,8 +5873,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6205,8 +5892,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -6230,13 +5916,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -6251,8 +5935,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -6310,8 +5993,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6330,8 +6012,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6350,8 +6031,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6370,8 +6050,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6390,8 +6069,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6410,8 +6088,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6430,8 +6107,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6450,8 +6126,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6470,8 +6145,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6490,8 +6164,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6510,8 +6183,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6530,8 +6202,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6550,8 +6221,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -6575,13 +6245,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -6596,8 +6264,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -6629,8 +6296,7 @@
       "Inference",
       {
         "current_goal_id": 1156,
-        "current_goal_text":
-          "std.map\n [att skip string, att local bool, att fail bool, att doc string, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X28",
+        "current_goal_text": "std.map\n [att skip string, att local bool, att fail bool, att doc string, \n  att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X28",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -6639,8 +6305,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -6670,8 +6335,7 @@
                 "goal_id": 1157
               },
               {
-                "goal_text":
-                  "std.map\n [att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X30",
+                "goal_text": "std.map\n [att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X30",
                 "goal_id": 1158
               }
             ],
@@ -6684,8 +6348,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6704,8 +6367,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6724,8 +6386,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6744,8 +6405,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6764,8 +6424,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6784,8 +6443,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6804,8 +6462,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6824,8 +6481,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6844,8 +6500,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6864,8 +6519,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6884,8 +6538,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6904,8 +6557,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6924,8 +6576,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -6944,8 +6595,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -6969,13 +6619,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -6990,8 +6638,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -7049,8 +6696,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7069,8 +6715,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7089,8 +6734,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7109,8 +6753,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7129,8 +6772,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7149,8 +6791,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7169,8 +6810,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7189,8 +6829,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7209,8 +6848,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7229,8 +6867,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7249,8 +6886,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7269,8 +6905,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7289,8 +6924,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7309,8 +6943,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -7334,13 +6967,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -7355,8 +6986,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -7388,8 +7018,7 @@
       "Inference",
       {
         "current_goal_id": 1158,
-        "current_goal_text":
-          "std.map\n [att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X30",
+        "current_goal_text": "std.map\n [att local bool, att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X30",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -7398,8 +7027,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -7429,8 +7057,7 @@
                 "goal_id": 1159
               },
               {
-                "goal_text":
-                  "std.map\n [att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X32",
+                "goal_text": "std.map\n [att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X32",
                 "goal_id": 1160
               }
             ],
@@ -7443,8 +7070,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7463,8 +7089,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7483,8 +7108,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7503,8 +7127,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7523,8 +7146,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7543,8 +7165,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7563,8 +7184,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7583,8 +7203,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7603,8 +7222,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7623,8 +7241,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7643,8 +7260,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7663,8 +7279,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7683,8 +7298,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7703,8 +7317,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7723,8 +7336,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -7748,13 +7360,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -7769,8 +7379,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -7828,8 +7437,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7848,8 +7456,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7868,8 +7475,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7888,8 +7494,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7908,8 +7513,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7928,8 +7532,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7948,8 +7551,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7968,8 +7570,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -7988,8 +7589,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8008,8 +7608,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8028,8 +7627,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8048,8 +7646,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8068,8 +7665,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8088,8 +7684,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8108,8 +7703,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -8133,13 +7727,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -8154,8 +7746,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -8187,8 +7778,7 @@
       "Inference",
       {
         "current_goal_id": 1160,
-        "current_goal_text":
-          "std.map\n [att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X32",
+        "current_goal_text": "std.map\n [att fail bool, att doc string, att primitive_class bool, \n  att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X32",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -8197,8 +7787,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -8228,8 +7817,7 @@
                 "goal_id": 1161
               },
               {
-                "goal_text":
-                  "std.map\n [att doc string, att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X34",
+                "goal_text": "std.map\n [att doc string, att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X34",
                 "goal_id": 1162
               }
             ],
@@ -8242,8 +7830,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8262,8 +7849,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8282,8 +7868,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8302,8 +7887,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8322,8 +7906,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8342,8 +7925,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8362,8 +7944,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8382,8 +7963,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8402,8 +7982,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8422,8 +8001,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8442,8 +8020,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8462,8 +8039,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8482,8 +8058,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8502,8 +8077,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8522,8 +8096,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8542,8 +8115,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -8567,13 +8139,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -8588,8 +8158,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -8647,8 +8216,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8667,8 +8235,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8687,8 +8254,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8707,8 +8273,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8727,8 +8292,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8747,8 +8311,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8767,8 +8330,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8787,8 +8349,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8807,8 +8368,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8827,8 +8387,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8847,8 +8406,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8867,8 +8425,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8887,8 +8444,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8907,8 +8463,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8927,8 +8482,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -8947,8 +8501,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -8972,13 +8525,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -8993,8 +8544,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -9026,8 +8576,7 @@
       "Inference",
       {
         "current_goal_id": 1162,
-        "current_goal_text":
-          "std.map\n [att doc string, att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X34",
+        "current_goal_text": "std.map\n [att doc string, att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X34",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -9036,8 +8585,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -9067,8 +8615,7 @@
                 "goal_id": 1163
               },
               {
-                "goal_text":
-                  "std.map\n [att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X36",
+                "goal_text": "std.map\n [att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X36",
                 "goal_id": 1164
               }
             ],
@@ -9081,8 +8628,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9101,8 +8647,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9121,8 +8666,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9141,8 +8685,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9161,8 +8704,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9181,8 +8723,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9201,8 +8742,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9221,8 +8761,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9241,8 +8780,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9261,8 +8799,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9281,8 +8818,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9301,8 +8837,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9321,8 +8856,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9341,8 +8875,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9361,8 +8894,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9381,8 +8913,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9401,8 +8932,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -9426,13 +8956,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -9447,8 +8975,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -9506,8 +9033,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9526,8 +9052,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9546,8 +9071,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9566,8 +9090,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9586,8 +9109,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9606,8 +9128,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9626,8 +9147,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9646,8 +9166,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9666,8 +9185,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9686,8 +9204,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9706,8 +9223,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9726,8 +9242,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9746,8 +9261,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9766,8 +9280,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9786,8 +9299,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9806,8 +9318,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9826,8 +9337,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -9851,13 +9361,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -9872,8 +9380,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -9905,8 +9412,7 @@
       "Inference",
       {
         "current_goal_id": 1164,
-        "current_goal_text":
-          "std.map\n [att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X36",
+        "current_goal_text": "std.map\n [att primitive_class bool, att primitive bool, \n  att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X36",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -9915,8 +9421,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -9942,13 +9447,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "X37 = supported-attribute (att primitive_class bool)",
+                "goal_text": "X37 = supported-attribute (att primitive_class bool)",
                 "goal_id": 1165
               },
               {
-                "goal_text":
-                  "std.map\n [att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X38",
+                "goal_text": "std.map\n [att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X38",
                 "goal_id": 1166
               }
             ],
@@ -9961,8 +9464,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -9981,8 +9483,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10001,8 +9502,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10021,8 +9521,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10041,8 +9540,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10061,8 +9559,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10081,8 +9578,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10101,8 +9597,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10121,8 +9616,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10141,8 +9635,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10161,8 +9654,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10181,8 +9673,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10201,8 +9692,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10221,8 +9711,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10241,8 +9730,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10261,8 +9749,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10281,8 +9768,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10301,8 +9787,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -10326,13 +9811,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -10347,8 +9830,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -10380,8 +9862,7 @@
       "Inference",
       {
         "current_goal_id": 1165,
-        "current_goal_text":
-          "X37 = supported-attribute (att primitive_class bool)",
+        "current_goal_text": "X37 = supported-attribute (att primitive_class bool)",
         "current_goal_predicate": "=",
         "failed_attempts": [],
         "successful_attempts": [
@@ -10410,8 +9891,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10430,8 +9910,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10450,8 +9929,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10470,8 +9948,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10490,8 +9967,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10510,8 +9986,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10530,8 +10005,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10550,8 +10024,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10570,8 +10043,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10590,8 +10062,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10610,8 +10081,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10630,8 +10100,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10650,8 +10119,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10670,8 +10138,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10690,8 +10157,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10710,8 +10176,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10730,8 +10195,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10750,8 +10214,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -10775,13 +10238,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -10796,8 +10257,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -10829,8 +10289,7 @@
       "Inference",
       {
         "current_goal_id": 1166,
-        "current_goal_text":
-          "std.map\n [att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X38",
+        "current_goal_text": "std.map\n [att primitive bool, att non_forgetful_inheritance bool, att hnf bool] (c0 \\\n c1 \\ c1 = supported-attribute c0) X38",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -10839,8 +10298,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -10870,8 +10328,7 @@
                 "goal_id": 1167
               },
               {
-                "goal_text":
-                  "std.map [att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X40",
+                "goal_text": "std.map [att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X40",
                 "goal_id": 1168
               }
             ],
@@ -10884,8 +10341,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10904,8 +10360,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10924,8 +10379,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10944,8 +10398,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10964,8 +10417,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -10984,8 +10436,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11004,8 +10455,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11024,8 +10474,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11044,8 +10493,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11064,8 +10512,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11084,8 +10531,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11104,8 +10550,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11124,8 +10569,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11144,8 +10588,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11164,8 +10607,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11184,8 +10626,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11204,8 +10645,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11224,8 +10664,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11244,8 +10683,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -11269,13 +10707,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -11290,8 +10726,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -11351,8 +10786,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11371,8 +10805,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11391,8 +10824,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11411,8 +10843,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11431,8 +10862,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11451,8 +10881,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11471,8 +10900,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11491,8 +10919,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11511,8 +10938,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11531,8 +10957,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11551,8 +10976,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11571,8 +10995,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11591,8 +11014,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11611,8 +11033,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11631,8 +11052,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11651,8 +11071,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11671,8 +11090,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11691,8 +11109,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11711,8 +11128,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -11736,13 +11152,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -11757,8 +11171,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -11790,8 +11203,7 @@
       "Inference",
       {
         "current_goal_id": 1168,
-        "current_goal_text":
-          "std.map [att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X40",
+        "current_goal_text": "std.map [att non_forgetful_inheritance bool, att hnf bool] (c0 \\ c1 \\\n c1 = supported-attribute c0) X40",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -11800,8 +11212,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -11824,13 +11235,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "X41 = supported-attribute (att non_forgetful_inheritance bool)",
+                "goal_text": "X41 = supported-attribute (att non_forgetful_inheritance bool)",
                 "goal_id": 1169
               },
               {
-                "goal_text":
-                  "std.map [att hnf bool] (c0 \\ c1 \\ c1 = supported-attribute c0) X42",
+                "goal_text": "std.map [att hnf bool] (c0 \\ c1 \\ c1 = supported-attribute c0) X42",
                 "goal_id": 1170
               }
             ],
@@ -11843,8 +11252,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11863,8 +11271,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11883,8 +11290,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11903,8 +11309,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11923,8 +11328,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11943,8 +11347,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11963,8 +11366,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -11983,8 +11385,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12003,8 +11404,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12023,8 +11423,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12043,8 +11442,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12063,8 +11461,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12083,8 +11480,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12103,8 +11499,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12123,8 +11518,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12143,8 +11537,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12163,8 +11556,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12183,8 +11575,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12203,8 +11594,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12223,8 +11613,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -12248,13 +11637,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -12269,8 +11656,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -12302,8 +11688,7 @@
       "Inference",
       {
         "current_goal_id": 1169,
-        "current_goal_text":
-          "X41 = supported-attribute (att non_forgetful_inheritance bool)",
+        "current_goal_text": "X41 = supported-attribute (att non_forgetful_inheritance bool)",
         "current_goal_predicate": "=",
         "failed_attempts": [],
         "successful_attempts": [
@@ -12332,8 +11717,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12352,8 +11736,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12372,8 +11755,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12392,8 +11774,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12412,8 +11793,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12432,8 +11812,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12452,8 +11831,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12472,8 +11850,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12492,8 +11869,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12512,8 +11888,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12532,8 +11907,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12552,8 +11926,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12572,8 +11945,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12592,8 +11964,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12612,8 +11983,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12632,8 +12002,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12652,8 +12021,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12672,8 +12040,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12692,8 +12059,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12712,8 +12078,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -12737,13 +12102,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -12758,8 +12121,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -12791,8 +12153,7 @@
       "Inference",
       {
         "current_goal_id": 1170,
-        "current_goal_text":
-          "std.map [att hnf bool] (c0 \\ c1 \\ c1 = supported-attribute c0) X42",
+        "current_goal_text": "std.map [att hnf bool] (c0 \\ c1 \\ c1 = supported-attribute c0) X42",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -12801,8 +12162,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -12829,8 +12189,7 @@
                 "goal_id": 1171
               },
               {
-                "goal_text":
-                  "std.map [] (c0 \\ c1 \\ c1 = supported-attribute c0) X44",
+                "goal_text": "std.map [] (c0 \\ c1 \\ c1 = supported-attribute c0) X44",
                 "goal_id": 1172
               }
             ],
@@ -12843,8 +12202,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12863,8 +12221,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12883,8 +12240,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12903,8 +12259,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12923,8 +12278,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12943,8 +12297,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12963,8 +12316,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -12983,8 +12335,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13003,8 +12354,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13023,8 +12373,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13043,8 +12392,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13063,8 +12411,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13083,8 +12430,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13103,8 +12449,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13123,8 +12468,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13143,8 +12487,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13163,8 +12506,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13183,8 +12525,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13203,8 +12544,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13223,8 +12563,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13243,8 +12582,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -13268,13 +12606,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -13289,8 +12625,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -13348,8 +12683,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13368,8 +12702,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13388,8 +12721,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13408,8 +12740,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13428,8 +12759,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13448,8 +12778,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13468,8 +12797,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13488,8 +12816,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13508,8 +12835,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13528,8 +12854,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13548,8 +12873,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13568,8 +12892,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13588,8 +12911,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13608,8 +12930,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13628,8 +12949,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13648,8 +12968,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13668,8 +12987,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13688,8 +13006,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13708,8 +13025,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13728,8 +13044,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13748,8 +13063,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -13773,13 +13087,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -13794,8 +13106,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -13827,8 +13138,7 @@
       "Inference",
       {
         "current_goal_id": 1172,
-        "current_goal_text":
-          "std.map [] (c0 \\ c1 \\ c1 = supported-attribute c0) X44",
+        "current_goal_text": "std.map [] (c0 \\ c1 \\ c1 = supported-attribute c0) X44",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -13880,8 +13190,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13900,8 +13209,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13920,8 +13228,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13940,8 +13247,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13960,8 +13266,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -13980,8 +13285,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14000,8 +13304,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14020,8 +13323,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14040,8 +13342,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14060,8 +13361,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14080,8 +13380,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14100,8 +13399,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14120,8 +13418,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14140,8 +13437,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14160,8 +13456,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14180,8 +13475,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14200,8 +13494,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14220,8 +13513,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14240,8 +13532,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14260,8 +13551,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14280,8 +13570,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -14305,13 +13594,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -14326,8 +13613,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -14359,8 +13645,7 @@
       "Inference",
       {
         "current_goal_id": 1131,
-        "current_goal_text":
-          "[supported-attribute (att verbose bool), \n supported-attribute (att mathcomp bool), \n supported-attribute (att mathcomp.axiom string), \n supported-attribute (att short.type string), \n supported-attribute (att short.pack string), \n supported-attribute (att infer attmap), \n supported-attribute (att key string), \n supported-attribute (att arg_sort bool), \n supported-attribute (att log bool), supported-attribute (att log.raw bool), \n supported-attribute (att compress_coercions bool), \n supported-attribute (att export bool), \n supported-attribute (att skip string), \n supported-attribute (att local bool), supported-attribute (att fail bool), \n supported-attribute (att doc string), \n supported-attribute (att primitive_class bool), \n supported-attribute (att primitive bool), \n supported-attribute (att non_forgetful_inheritance bool), \n supported-attribute (att hnf bool)] =>\n parse-attributes.aux\n  [attribute elpi.loc \n    (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)]  X3",
+        "current_goal_text": "[supported-attribute (att verbose bool), \n supported-attribute (att mathcomp bool), \n supported-attribute (att mathcomp.axiom string), \n supported-attribute (att short.type string), \n supported-attribute (att short.pack string), \n supported-attribute (att infer attmap), \n supported-attribute (att key string), \n supported-attribute (att arg_sort bool), \n supported-attribute (att log bool), supported-attribute (att log.raw bool), \n supported-attribute (att compress_coercions bool), \n supported-attribute (att export bool), \n supported-attribute (att skip string), \n supported-attribute (att local bool), supported-attribute (att fail bool), \n supported-attribute (att doc string), \n supported-attribute (att primitive_class bool), \n supported-attribute (att primitive bool), \n supported-attribute (att non_forgetful_inheritance bool), \n supported-attribute (att hnf bool)] =>\n parse-attributes.aux\n  [attribute elpi.loc \n    (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)]  X3",
         "current_goal_predicate": "=>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -14371,8 +13656,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "parse-attributes.aux\n [attribute elpi.loc \n   (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)]  X3",
+                "goal_text": "parse-attributes.aux\n [attribute elpi.loc \n   (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)]  X3",
                 "goal_id": 1173
               }
             ],
@@ -14390,8 +13674,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -14415,13 +13698,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -14436,8 +13717,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -14469,16 +13749,14 @@
       "Inference",
       {
         "current_goal_id": 1173,
-        "current_goal_text":
-          "parse-attributes.aux\n [attribute elpi.loc \n   (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)]  X3",
+        "current_goal_text": "parse-attributes.aux\n [attribute elpi.loc \n   (leaf-loc File \"(stdin)\", line 1, column 2, character 3:)]  X3",
         "current_goal_predicate": "parse-attributes.aux",
         "failed_attempts": [
           {
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A5 = A0) \n                                                                (A5 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A5 attmap)), (!), \n (parse-attributes.aux A2 A3 A6), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A7), (std.append A6 [get-option A5 A7] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A5 = A0) \n                                                                (A5 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A5 attmap)), (!), \n (parse-attributes.aux A2 A3 A6), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A7), (std.append A6 [get-option A5 A7] A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14502,8 +13780,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (!), \n (parse-attributes.aux A2 A3 A5), \n (if (A3 = ) (A6 = A0) (A6 is A3 ^ . ^ A0)), \n (parse-attributes.aux A1 A6 A7), (std.append A5 A7 A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (!), \n (parse-attributes.aux A2 A3 A5), \n (if (A3 = ) (A6 = A0) (A6 is A3 ^ . ^ A0)), \n (parse-attributes.aux A1 A6 A7), (std.append A5 A7 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -14527,8 +13804,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (leaf-str A1) | A2] A3 A4) :- (!), \n (if (A3 = ) (A5 = A0) (A5 is A3 ^ . ^ A0)), \n (coq.valid-str-attribute A5 A1 A6 A7), \n (if (A7 = error A8) (coq.error A8) true), \n (if (A6 = some A9) (A4 = [get-option A5 A9 | A10]) (A4 = A10)), \n (parse-attributes.aux A2 A3 A10).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (leaf-str A1) | A2] A3 A4) :- (!), \n (if (A3 = ) (A5 = A0) (A5 is A3 ^ . ^ A0)), \n (coq.valid-str-attribute A5 A1 A6 A7), \n (if (A7 = error A8) (coq.error A8) true), \n (if (A6 = some A9) (A4 = [get-option A5 A9 | A10]) (A4 = A10)), \n (parse-attributes.aux A2 A3 A10).",
                 "rule_loc": [
                   "File",
                   {
@@ -14552,8 +13828,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (leaf-loc A1) | A2] A3 A4) :- (!), \n (if (A3 = ) (A5 = A0) (A5 is A3 ^ . ^ A0)), \n (coq.valid-loc-attribute A5 A1 A6), \n (if (A6 = error A7) (coq.error A7) true), (A4 = [get-option A5 A1 | A8]), \n (parse-attributes.aux A2 A3 A8).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (leaf-loc A1) | A2] A3 A4) :- (!), \n (if (A3 = ) (A5 = A0) (A5 is A3 ^ . ^ A0)), \n (coq.valid-loc-attribute A5 A1 A6), \n (if (A6 = error A7) (coq.error A7) true), (A4 = [get-option A5 A1 | A8]), \n (parse-attributes.aux A2 A3 A8).",
                 "rule_loc": [
                   "File",
                   {
@@ -14583,8 +13858,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                  "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                   "rule_loc": [ "Context", 6 ]
                 }
               ],
@@ -14599,13 +13873,11 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1174 },
               {
-                "goal_text":
-                  "if ( = ) (X45 = elpi.loc) (X45 is  ^ . ^ elpi.loc)",
+                "goal_text": "if ( = ) (X45 = elpi.loc) (X45 is  ^ . ^ elpi.loc)",
                 "goal_id": 1175
               },
               {
-                "goal_text":
-                  "coq.valid-loc-attribute X45 File \"(stdin)\", line 1, column 2, character 3: \n X46",
+                "goal_text": "coq.valid-loc-attribute X45 File \"(stdin)\", line 1, column 2, character 3: \n X46",
                 "goal_id": 1176
               },
               {
@@ -14613,8 +13885,7 @@
                 "goal_id": 1177
               },
               {
-                "goal_text":
-                  "X3 = [get-option X45 File \"(stdin)\", line 1, column 2, character 3: | X48]",
+                "goal_text": "X3 = [get-option X45 File \"(stdin)\", line 1, column 2, character 3: | X48]",
                 "goal_id": 1178
               },
               {
@@ -14631,8 +13902,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -14648,8 +13918,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -14673,13 +13942,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -14694,8 +13961,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -14733,8 +13999,7 @@
       "Inference",
       {
         "current_goal_id": 1175,
-        "current_goal_text":
-          "if ( = ) (X45 = elpi.loc) (X45 is  ^ . ^ elpi.loc)",
+        "current_goal_text": "if ( = ) (X45 = elpi.loc) (X45 is  ^ . ^ elpi.loc)",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -14793,8 +14058,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -14810,8 +14074,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -14835,13 +14098,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -14856,8 +14117,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -14932,8 +14192,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -14949,8 +14208,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -14974,13 +14232,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -14995,8 +14251,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -15031,8 +14286,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "if ( = ) (X45 = elpi.loc) (X45 is  ^ . ^ elpi.loc)",
+              "goal_text": "if ( = ) (X45 = elpi.loc) (X45 is  ^ . ^ elpi.loc)",
               "goal_id": 1175
             },
             "cut_branch": {
@@ -15103,8 +14357,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -15120,8 +14373,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -15145,13 +14397,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -15166,8 +14416,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -15199,8 +14448,7 @@
       "Inference",
       {
         "current_goal_id": 1176,
-        "current_goal_text":
-          "coq.valid-loc-attribute elpi.loc \n File \"(stdin)\", line 1, column 2, character 3: X46",
+        "current_goal_text": "coq.valid-loc-attribute elpi.loc \n File \"(stdin)\", line 1, column 2, character 3: X46",
         "current_goal_predicate": "coq.valid-loc-attribute",
         "failed_attempts": [],
         "successful_attempts": [
@@ -15209,8 +14457,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
+                  "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
                   "rule_loc": [
                     "File",
                     {
@@ -15233,8 +14480,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if (supported-attribute (att elpi.loc loc)) \n (if (primitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t) \n   (X46 = ok) \n   ((std.any->string File \"(stdin)\", line 1, column 2, character 3: X49 ,\n      calc (Attribute  ^ elpi.loc ^  takes a loc, got  ^ X49) X50) ,\n     X46 = error X50)) \n (if (supported-attribute att-ignore-unknown) (X46 = ok) \n   (calc (Attribute  ^ elpi.loc ^  is not supported) X51 , X46 = error X51))",
+                "goal_text": "if (supported-attribute (att elpi.loc loc)) \n (if (primitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t) \n   (X46 = ok) \n   ((std.any->string File \"(stdin)\", line 1, column 2, character 3: X49 ,\n      calc (Attribute  ^ elpi.loc ^  takes a loc, got  ^ X49) X50) ,\n     X46 = error X50)) \n (if (supported-attribute att-ignore-unknown) (X46 = ok) \n   (calc (Attribute  ^ elpi.loc ^  is not supported) X51 , X46 = error X51))",
                 "goal_id": 1183
               }
             ],
@@ -15247,8 +14493,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
+                "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
                 "rule_loc": [
                   "File",
                   {
@@ -15267,8 +14512,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -15284,8 +14528,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -15309,13 +14552,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -15330,8 +14571,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -15363,8 +14603,7 @@
       "Inference",
       {
         "current_goal_id": 1183,
-        "current_goal_text":
-          "if (supported-attribute (att elpi.loc loc)) \n (if (primitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t) \n   (X46 = ok) \n   ((std.any->string File \"(stdin)\", line 1, column 2, character 3: X49 ,\n      calc (Attribute  ^ elpi.loc ^  takes a loc, got  ^ X49) X50) ,\n     X46 = error X50)) \n (if (supported-attribute att-ignore-unknown) (X46 = ok) \n   (calc (Attribute  ^ elpi.loc ^  is not supported) X51 , X46 = error X51))",
+        "current_goal_text": "if (supported-attribute (att elpi.loc loc)) \n (if (primitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t) \n   (X46 = ok) \n   ((std.any->string File \"(stdin)\", line 1, column 2, character 3: X49 ,\n      calc (Attribute  ^ elpi.loc ^  takes a loc, got  ^ X49) X50) ,\n     X46 = error X50)) \n (if (supported-attribute att-ignore-unknown) (X46 = ok) \n   (calc (Attribute  ^ elpi.loc ^  is not supported) X51 , X46 = error X51))",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -15400,8 +14639,7 @@
               },
               { "goal_text": "!", "goal_id": 1185 },
               {
-                "goal_text":
-                  "if (primitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t) \n (X46 = ok) \n ((std.any->string File \"(stdin)\", line 1, column 2, character 3: X49 ,\n    calc (Attribute  ^ elpi.loc ^  takes a loc, got  ^ X49) X50) ,\n   X46 = error X50)",
+                "goal_text": "if (primitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t) \n (X46 = ok) \n ((std.any->string File \"(stdin)\", line 1, column 2, character 3: X49 ,\n    calc (Attribute  ^ elpi.loc ^  takes a loc, got  ^ X49) X50) ,\n   X46 = error X50)",
                 "goal_id": 1186
               }
             ],
@@ -15433,8 +14671,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
+                "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
                 "rule_loc": [
                   "File",
                   {
@@ -15453,8 +14690,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -15470,8 +14706,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -15495,13 +14730,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -15516,8 +14749,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -15568,8 +14800,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(supported-attribute (att mathcomp.axiom string)) :- .",
+                "rule_text": "(supported-attribute (att mathcomp.axiom string)) :- .",
                 "rule_loc": [ "Context", 49 ]
               }
             ],
@@ -15584,8 +14815,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(supported-attribute (att short.type string)) :- .",
+                "rule_text": "(supported-attribute (att short.type string)) :- .",
                 "rule_loc": [ "Context", 49 ]
               }
             ],
@@ -15597,8 +14827,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(supported-attribute (att short.pack string)) :- .",
+                "rule_text": "(supported-attribute (att short.pack string)) :- .",
                 "rule_loc": [ "Context", 49 ]
               }
             ],
@@ -15670,8 +14899,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(supported-attribute (att compress_coercions bool)) :- .",
+                "rule_text": "(supported-attribute (att compress_coercions bool)) :- .",
                 "rule_loc": [ "Context", 49 ]
               }
             ],
@@ -15746,8 +14974,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(supported-attribute (att primitive_class bool)) :- .",
+                "rule_text": "(supported-attribute (att primitive_class bool)) :- .",
                 "rule_loc": [ "Context", 49 ]
               }
             ],
@@ -15762,8 +14989,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(supported-attribute (att primitive bool)) :- .",
+                "rule_text": "(supported-attribute (att primitive bool)) :- .",
                 "rule_loc": [ "Context", 49 ]
               }
             ],
@@ -15775,8 +15001,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(supported-attribute (att non_forgetful_inheritance bool)) :- .",
+                "rule_text": "(supported-attribute (att non_forgetful_inheritance bool)) :- .",
                 "rule_loc": [ "Context", 49 ]
               }
             ],
@@ -15824,8 +15049,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(supported-attribute (att verbose bool)) :- .",
+                  "rule_text": "(supported-attribute (att verbose bool)) :- .",
                   "rule_loc": [ "Context", 49 ]
                 }
               ],
@@ -15873,8 +15097,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
+                "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
                 "rule_loc": [
                   "File",
                   {
@@ -15893,8 +15116,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -15910,8 +15132,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -15935,13 +15156,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -15956,8 +15175,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -15996,8 +15214,7 @@
               "goal_id": 1184
             },
             "cut_branch": {
-              "rule_text":
-                "(supported-attribute (att A0 string)) :- (rex_match ^elpi\\. A0).",
+              "rule_text": "(supported-attribute (att A0 string)) :- (rex_match ^elpi\\. A0).",
               "rule_loc": [
                 "File",
                 {
@@ -16011,8 +15228,7 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "if (supported-attribute (att elpi.loc loc)) \n (if (primitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t) \n   (X46 = ok) \n   ((std.any->string File \"(stdin)\", line 1, column 2, character 3: X49 ,\n      calc (Attribute  ^ elpi.loc ^  takes a loc, got  ^ X49) X50) ,\n     X46 = error X50)) \n (if (supported-attribute att-ignore-unknown) (X46 = ok) \n   (calc (Attribute  ^ elpi.loc ^  is not supported) X51 , X46 = error X51))",
+              "goal_text": "if (supported-attribute (att elpi.loc loc)) \n (if (primitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t) \n   (X46 = ok) \n   ((std.any->string File \"(stdin)\", line 1, column 2, character 3: X49 ,\n      calc (Attribute  ^ elpi.loc ^  takes a loc, got  ^ X49) X50) ,\n     X46 = error X50)) \n (if (supported-attribute att-ignore-unknown) (X46 = ok) \n   (calc (Attribute  ^ elpi.loc ^  is not supported) X51 , X46 = error X51))",
               "goal_id": 1183
             },
             "cut_branch": {
@@ -16040,8 +15256,7 @@
       "Inference",
       {
         "current_goal_id": 1186,
-        "current_goal_text":
-          "if (primitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t) \n (X46 = ok) \n ((std.any->string File \"(stdin)\", line 1, column 2, character 3: X49 ,\n    calc (Attribute  ^ elpi.loc ^  takes a loc, got  ^ X49) X50) ,\n   X46 = error X50)",
+        "current_goal_text": "if (primitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t) \n (X46 = ok) \n ((std.any->string File \"(stdin)\", line 1, column 2, character 3: X49 ,\n    calc (Attribute  ^ elpi.loc ^  takes a loc, got  ^ X49) X50) ,\n   X46 = error X50)",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -16072,8 +15287,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "primitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t",
+                "goal_text": "primitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t",
                 "goal_id": 1187
               },
               { "goal_text": "!", "goal_id": 1188 },
@@ -16126,8 +15340,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
+                "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
                 "rule_loc": [
                   "File",
                   {
@@ -16146,8 +15359,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -16163,8 +15375,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -16188,13 +15399,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -16209,8 +15418,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -16242,8 +15450,7 @@
       "Inference",
       {
         "current_goal_id": 1187,
-        "current_goal_text":
-          "primitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t",
+        "current_goal_text": "primitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t",
         "current_goal_predicate": "primitive?",
         "failed_attempts": [],
         "successful_attempts": [
@@ -16252,8 +15459,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(primitive? A0 A1) :- (is_cdata A0 (ctype A1)).",
+                  "rule_text": "(primitive? A0 A1) :- (is_cdata A0 (ctype A1)).",
                   "rule_loc": [
                     "File",
                     {
@@ -16275,8 +15481,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "is_cdata File \"(stdin)\", line 1, column 2, character 3: (ctype Loc.t)",
+                "goal_text": "is_cdata File \"(stdin)\", line 1, column 2, character 3: (ctype Loc.t)",
                 "goal_id": 1190
               }
             ],
@@ -16289,8 +15494,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(primitive? A0 A1) :- (is_cdata A0 (ctype A1)).",
+                "rule_text": "(primitive? A0 A1) :- (is_cdata A0 (ctype A1)).",
                 "rule_loc": [
                   "File",
                   {
@@ -16347,8 +15551,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
+                "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
                 "rule_loc": [
                   "File",
                   {
@@ -16367,8 +15570,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -16384,8 +15586,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -16409,13 +15610,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -16430,8 +15629,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -16463,8 +15661,7 @@
       "Inference",
       {
         "current_goal_id": 1190,
-        "current_goal_text":
-          "is_cdata File \"(stdin)\", line 1, column 2, character 3: (ctype Loc.t)",
+        "current_goal_text": "is_cdata File \"(stdin)\", line 1, column 2, character 3: (ctype Loc.t)",
         "current_goal_predicate": "is_cdata",
         "failed_attempts": [],
         "successful_attempts": [
@@ -16490,8 +15687,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(primitive? A0 A1) :- (is_cdata A0 (ctype A1)).",
+                "rule_text": "(primitive? A0 A1) :- (is_cdata A0 (ctype A1)).",
                 "rule_loc": [
                   "File",
                   {
@@ -16548,8 +15744,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
+                "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
                 "rule_loc": [
                   "File",
                   {
@@ -16568,8 +15763,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -16585,8 +15779,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -16610,13 +15803,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -16631,8 +15822,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -16693,8 +15883,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(primitive? A0 A1) :- (is_cdata A0 (ctype A1)).",
+                "rule_text": "(primitive? A0 A1) :- (is_cdata A0 (ctype A1)).",
                 "rule_loc": [
                   "File",
                   {
@@ -16751,8 +15940,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
+                "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
                 "rule_loc": [
                   "File",
                   {
@@ -16771,8 +15959,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -16788,8 +15975,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -16813,13 +15999,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -16834,8 +16018,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -16870,8 +16053,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "if (primitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t) \n (X46 = ok) \n ((std.any->string File \"(stdin)\", line 1, column 2, character 3: X49 ,\n    calc (Attribute  ^ elpi.loc ^  takes a loc, got  ^ X49) X50) ,\n   X46 = error X50)",
+              "goal_text": "if (primitive? File \"(stdin)\", line 1, column 2, character 3: Loc.t) \n (X46 = ok) \n ((std.any->string File \"(stdin)\", line 1, column 2, character 3: X49 ,\n    calc (Attribute  ^ elpi.loc ^  takes a loc, got  ^ X49) X50) ,\n   X46 = error X50)",
               "goal_id": 1186
             },
             "cut_branch": {
@@ -16961,8 +16143,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
+                "rule_text": "(coq.valid-loc-attribute A0 A1 A2) :- (if (supported-attribute (att A0 loc)) \n                                        (if (primitive? A1 Loc.t) (A2 = ok) \n                                          ((std.any->string A1 A4 ,\n                                             calc\n                                              (Attribute  ^ A0 ^\n                                                 takes a loc, got  ^ A4) A5)\n                                            , A2 = error A5)) \n                                        (if\n                                          (supported-attribute\n                                            att-ignore-unknown) (A2 = ok) \n                                          (calc\n                                            (Attribute  ^ A0 ^\n                                               is not supported) A3 ,\n                                            A2 = error A3))).",
                 "rule_loc": [
                   "File",
                   {
@@ -16981,8 +16162,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -16998,8 +16178,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -17023,13 +16202,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -17044,8 +16221,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -17136,8 +16312,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -17153,8 +16328,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -17178,13 +16352,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -17199,8 +16371,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -17271,8 +16442,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -17288,8 +16458,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -17313,13 +16482,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -17334,8 +16501,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -17419,8 +16585,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -17436,8 +16601,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -17461,13 +16625,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -17482,8 +16644,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -17586,8 +16747,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -17603,8 +16763,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -17628,13 +16787,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -17649,8 +16806,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -17682,8 +16838,7 @@
       "Inference",
       {
         "current_goal_id": 1178,
-        "current_goal_text":
-          "X3 =\n [get-option elpi.loc File \"(stdin)\", line 1, column 2, character 3: | X48]",
+        "current_goal_text": "X3 =\n [get-option elpi.loc File \"(stdin)\", line 1, column 2, character 3: | X48]",
         "current_goal_predicate": "=",
         "failed_attempts": [],
         "successful_attempts": [
@@ -17712,8 +16867,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -17729,8 +16883,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -17754,13 +16907,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -17775,8 +16926,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -17860,8 +17010,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
+                "rule_text": "(parse-attributes.aux [attribute A0 (node A1) | A2] A3 A4) :- (if (A3 = ) \n                                                                (A7 = A0) \n                                                                (A7 is\n                                                                  A3 ^ . ^ A0)), \n (supported-attribute (att A7 attmap)), (!), \n (parse-attributes.aux A2 A3 A5), \n (pi (c0 \\ (supported-attribute (att c0 string) :- !)) =>\n   parse-attributes.aux A1  A6), (std.append A5 [get-option A7 A6] A4).",
                 "rule_loc": [ "Context", 6 ]
               }
             ],
@@ -17877,8 +17026,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
+                "rule_text": "(coq.parse-attributes A0 A1 A2) :- (std.map A1 (c0 \\ (c1 \\\n                                     (c1 = supported-attribute c0))) A3), \n (A3 => parse-attributes.aux A0  A2), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -17902,13 +17050,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -17923,8 +17069,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -17968,8 +17113,7 @@
       "Inference",
       {
         "current_goal_id": 1128,
-        "current_goal_text":
-          "[get-option elpi.loc File \"(stdin)\", line 1, column 2, character 3:] =>\n (save-docstring ,\n   with-logging\n    (instance.declare-const _ \n      (app\n        [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n         global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _))",
+        "current_goal_text": "[get-option elpi.loc File \"(stdin)\", line 1, column 2, character 3:] =>\n (save-docstring ,\n   with-logging\n    (instance.declare-const _ \n      (app\n        [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n         global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _))",
         "current_goal_predicate": "=>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -17980,8 +17124,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "save-docstring ,\n with-logging\n  (instance.declare-const _ \n    (app\n      [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n       global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _)",
+                "goal_text": "save-docstring ,\n with-logging\n  (instance.declare-const _ \n    (app\n      [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n       global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _)",
                 "goal_id": 1196
               }
             ],
@@ -17999,13 +17142,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -18020,8 +17161,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -18053,8 +17193,7 @@
       "Inference",
       {
         "current_goal_id": 1196,
-        "current_goal_text":
-          "save-docstring ,\n with-logging\n  (instance.declare-const _ \n    (app\n      [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n       global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _)",
+        "current_goal_text": "save-docstring ,\n with-logging\n  (instance.declare-const _ \n    (app\n      [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n       global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _)",
         "current_goal_predicate": ",",
         "failed_attempts": [],
         "successful_attempts": [
@@ -18066,8 +17205,7 @@
             "siblings": [
               { "goal_text": "save-docstring", "goal_id": 1197 },
               {
-                "goal_text":
-                  "with-logging\n (instance.declare-const _ \n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _)",
+                "goal_text": "with-logging\n (instance.declare-const _ \n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _)",
                 "goal_id": 1198
               }
             ],
@@ -18090,13 +17228,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -18111,8 +17247,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -18153,13 +17288,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "save-docstring :- (if (get-option elpi.loc A0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
+                  "rule_text": "save-docstring :- (if (get-option elpi.loc A0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                       "line": 81,
                       "column": 0,
                       "character": 2429
@@ -18171,8 +17304,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if (get-option elpi.loc X52 , get-option doc X53) \n (acc-clause _ (docstring X52 X53)) true",
+                "goal_text": "if (get-option elpi.loc X52 , get-option doc X53) \n (acc-clause _ (docstring X52 X53)) true",
                 "goal_id": 1199
               }
             ],
@@ -18185,13 +17317,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "save-docstring :- (if (get-option elpi.loc A0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
+                "rule_text": "save-docstring :- (if (get-option elpi.loc A0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 81,
                     "column": 0,
                     "character": 2429
@@ -18216,13 +17346,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -18237,8 +17365,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -18270,8 +17397,7 @@
       "Inference",
       {
         "current_goal_id": 1199,
-        "current_goal_text":
-          "if (get-option elpi.loc X52 , get-option doc X53) \n (acc-clause _ (docstring X52 X53)) true",
+        "current_goal_text": "if (get-option elpi.loc X52 , get-option doc X53) \n (acc-clause _ (docstring X52 X53)) true",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -18339,13 +17465,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "save-docstring :- (if (get-option elpi.loc A0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
+                "rule_text": "save-docstring :- (if (get-option elpi.loc A0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 81,
                     "column": 0,
                     "character": 2429
@@ -18370,13 +17494,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -18391,8 +17513,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -18470,13 +17591,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "save-docstring :- (if (get-option elpi.loc A0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
+                "rule_text": "save-docstring :- (if (get-option elpi.loc A0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 81,
                     "column": 0,
                     "character": 2429
@@ -18501,13 +17620,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -18522,8 +17639,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -18564,8 +17680,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(get-option elpi.loc File \"(stdin)\", line 1, column 2, character 3:) :- .",
+                  "rule_text": "(get-option elpi.loc File \"(stdin)\", line 1, column 2, character 3:) :- .",
                   "rule_loc": [ "Context", 74 ]
                 }
               ],
@@ -18586,8 +17701,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(get-option elpi.loc File \"(stdin)\", line 1, column 2, character 3:) :- .",
+                "rule_text": "(get-option elpi.loc File \"(stdin)\", line 1, column 2, character 3:) :- .",
                 "rule_loc": [ "Context", 74 ]
               }
             ],
@@ -18622,13 +17736,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "save-docstring :- (if (get-option elpi.loc A0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
+                "rule_text": "save-docstring :- (if (get-option elpi.loc A0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 81,
                     "column": 0,
                     "character": 2429
@@ -18653,13 +17765,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -18674,8 +17784,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -18741,13 +17850,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "save-docstring :- (if (get-option elpi.loc A0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
+                "rule_text": "save-docstring :- (if (get-option elpi.loc A0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 81,
                     "column": 0,
                     "character": 2429
@@ -18772,13 +17879,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -18793,8 +17898,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -18826,8 +17930,7 @@
       "Inference",
       {
         "current_goal_id": 1199,
-        "current_goal_text":
-          "if (get-option elpi.loc X52 , get-option doc X53) \n (acc-clause _ (docstring X52 X53)) true",
+        "current_goal_text": "if (get-option elpi.loc X52 , get-option doc X53) \n (acc-clause _ (docstring X52 X53)) true",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -18879,13 +17982,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "save-docstring :- (if (get-option elpi.loc A0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
+                "rule_text": "save-docstring :- (if (get-option elpi.loc A0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 81,
                     "column": 0,
                     "character": 2429
@@ -18910,13 +18011,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -18931,8 +18030,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -19035,13 +18133,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "save-docstring :- (if (get-option elpi.loc A0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
+                "rule_text": "save-docstring :- (if (get-option elpi.loc A0 , get-option doc A1) \n                    (acc-clause _ (docstring A0 A1)) true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 81,
                     "column": 0,
                     "character": 2429
@@ -19066,13 +18162,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -19087,8 +18181,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -19120,8 +18213,7 @@
       "Inference",
       {
         "current_goal_id": 1198,
-        "current_goal_text":
-          "with-logging\n (instance.declare-const _ \n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _)",
+        "current_goal_text": "with-logging\n (instance.declare-const _ \n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _)",
         "current_goal_predicate": "with-logging",
         "failed_attempts": [],
         "successful_attempts": [
@@ -19130,13 +18222,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(with-logging A0) :- (get-option elpi.hb.log _ , A1 = tt ;\n                       get-option elpi.hb.log.raw _ , A1 = ff), (!), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->string A2 A4), (A5 is A3 ^ .hb), (open_append A5 A6), \n (std.string.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_out A6), (log.private.logger A8 A1 => A0), \n (log.private.logger-close A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11).",
+                  "rule_text": "(with-logging A0) :- (get-option elpi.hb.log _ , A1 = tt ;\n                       get-option elpi.hb.log.raw _ , A1 = ff), (!), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->string A2 A4), (A5 is A3 ^ .hb), (open_append A5 A6), \n (std.string.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_out A6), (log.private.logger A8 A1 => A0), \n (log.private.logger-close A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                       "line": 267,
                       "column": 0,
                       "character": 10575
@@ -19153,8 +18243,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "get-option elpi.hb.log _ , X54 = tt ; get-option elpi.hb.log.raw _ , X54 = ff",
+                "goal_text": "get-option elpi.hb.log _ , X54 = tt ; get-option elpi.hb.log.raw _ , X54 = ff",
                 "goal_id": 1206
               },
               { "goal_text": "!", "goal_id": 1207 },
@@ -19164,15 +18253,13 @@
               { "goal_text": "X58 is X56 ^ .hb", "goal_id": 1211 },
               { "goal_text": "open_append X58 X59", "goal_id": 1212 },
               {
-                "goal_text":
-                  "std.string.concat \n [, HIERARCHY BUILDER PATCH v1, X57, ] X60",
+                "goal_text": "std.string.concat \n [, HIERARCHY BUILDER PATCH v1, X57, ] X60",
                 "goal_id": 1213
               },
               { "goal_text": "output X59 X60", "goal_id": 1214 },
               { "goal_text": "close_out X59", "goal_id": 1215 },
               {
-                "goal_text":
-                  "log.private.logger X61 X54 =>\n instance.declare-const _ \n  (app\n    [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n     global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _",
+                "goal_text": "log.private.logger X61 X54 =>\n instance.declare-const _ \n  (app\n    [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n     global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _",
                 "goal_id": 1216
               },
               {
@@ -19184,8 +18271,7 @@
                 "goal_id": 1218
               },
               {
-                "goal_text":
-                  "coq.pp->string (coq.pp.box (coq.pp.v 0) X62) X63",
+                "goal_text": "coq.pp->string (coq.pp.box (coq.pp.v 0) X62) X63",
                 "goal_id": 1219
               },
               { "goal_text": "open_append X58 X64", "goal_id": 1220 },
@@ -19201,13 +18287,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-logging A0) :- (get-option elpi.hb.log _ , A1 = tt ;\n                       get-option elpi.hb.log.raw _ , A1 = ff), (!), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->string A2 A4), (A5 is A3 ^ .hb), (open_append A5 A6), \n (std.string.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_out A6), (log.private.logger A8 A1 => A0), \n (log.private.logger-close A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11).",
+                "rule_text": "(with-logging A0) :- (get-option elpi.hb.log _ , A1 = tt ;\n                       get-option elpi.hb.log.raw _ , A1 = ff), (!), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->string A2 A4), (A5 is A3 ^ .hb), (open_append A5 A6), \n (std.string.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_out A6), (log.private.logger A8 A1 => A0), \n (log.private.logger-close A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 267,
                     "column": 0,
                     "character": 10575
@@ -19232,13 +18316,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -19253,8 +18335,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -19286,8 +18367,7 @@
       "Inference",
       {
         "current_goal_id": 1206,
-        "current_goal_text":
-          "get-option elpi.hb.log _ , X54 = tt ; get-option elpi.hb.log.raw _ , X54 = ff",
+        "current_goal_text": "get-option elpi.hb.log _ , X54 = tt ; get-option elpi.hb.log.raw _ , X54 = ff",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -19346,13 +18426,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-logging A0) :- (get-option elpi.hb.log _ , A1 = tt ;\n                       get-option elpi.hb.log.raw _ , A1 = ff), (!), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->string A2 A4), (A5 is A3 ^ .hb), (open_append A5 A6), \n (std.string.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_out A6), (log.private.logger A8 A1 => A0), \n (log.private.logger-close A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11).",
+                "rule_text": "(with-logging A0) :- (get-option elpi.hb.log _ , A1 = tt ;\n                       get-option elpi.hb.log.raw _ , A1 = ff), (!), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->string A2 A4), (A5 is A3 ^ .hb), (open_append A5 A6), \n (std.string.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_out A6), (log.private.logger A8 A1 => A0), \n (log.private.logger-close A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 267,
                     "column": 0,
                     "character": 10575
@@ -19377,13 +18455,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -19398,8 +18474,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -19477,13 +18552,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-logging A0) :- (get-option elpi.hb.log _ , A1 = tt ;\n                       get-option elpi.hb.log.raw _ , A1 = ff), (!), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->string A2 A4), (A5 is A3 ^ .hb), (open_append A5 A6), \n (std.string.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_out A6), (log.private.logger A8 A1 => A0), \n (log.private.logger-close A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11).",
+                "rule_text": "(with-logging A0) :- (get-option elpi.hb.log _ , A1 = tt ;\n                       get-option elpi.hb.log.raw _ , A1 = ff), (!), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->string A2 A4), (A5 is A3 ^ .hb), (open_append A5 A6), \n (std.string.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_out A6), (log.private.logger A8 A1 => A0), \n (log.private.logger-close A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 267,
                     "column": 0,
                     "character": 10575
@@ -19508,13 +18581,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -19529,8 +18600,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -19596,13 +18666,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-logging A0) :- (get-option elpi.hb.log _ , A1 = tt ;\n                       get-option elpi.hb.log.raw _ , A1 = ff), (!), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->string A2 A4), (A5 is A3 ^ .hb), (open_append A5 A6), \n (std.string.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_out A6), (log.private.logger A8 A1 => A0), \n (log.private.logger-close A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11).",
+                "rule_text": "(with-logging A0) :- (get-option elpi.hb.log _ , A1 = tt ;\n                       get-option elpi.hb.log.raw _ , A1 = ff), (!), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->string A2 A4), (A5 is A3 ^ .hb), (open_append A5 A6), \n (std.string.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_out A6), (log.private.logger A8 A1 => A0), \n (log.private.logger-close A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 267,
                     "column": 0,
                     "character": 10575
@@ -19627,13 +18695,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -19648,8 +18714,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -19681,8 +18746,7 @@
       "Inference",
       {
         "current_goal_id": 1206,
-        "current_goal_text":
-          "get-option elpi.hb.log _ , X54 = tt ; get-option elpi.hb.log.raw _ , X54 = ff",
+        "current_goal_text": "get-option elpi.hb.log _ , X54 = tt ; get-option elpi.hb.log.raw _ , X54 = ff",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -19741,13 +18805,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-logging A0) :- (get-option elpi.hb.log _ , A1 = tt ;\n                       get-option elpi.hb.log.raw _ , A1 = ff), (!), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->string A2 A4), (A5 is A3 ^ .hb), (open_append A5 A6), \n (std.string.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_out A6), (log.private.logger A8 A1 => A0), \n (log.private.logger-close A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11).",
+                "rule_text": "(with-logging A0) :- (get-option elpi.hb.log _ , A1 = tt ;\n                       get-option elpi.hb.log.raw _ , A1 = ff), (!), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->string A2 A4), (A5 is A3 ^ .hb), (open_append A5 A6), \n (std.string.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_out A6), (log.private.logger A8 A1 => A0), \n (log.private.logger-close A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 267,
                     "column": 0,
                     "character": 10575
@@ -19772,13 +18834,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -19793,8 +18853,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -19875,13 +18934,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-logging A0) :- (get-option elpi.hb.log _ , A1 = tt ;\n                       get-option elpi.hb.log.raw _ , A1 = ff), (!), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->string A2 A4), (A5 is A3 ^ .hb), (open_append A5 A6), \n (std.string.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_out A6), (log.private.logger A8 A1 => A0), \n (log.private.logger-close A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11).",
+                "rule_text": "(with-logging A0) :- (get-option elpi.hb.log _ , A1 = tt ;\n                       get-option elpi.hb.log.raw _ , A1 = ff), (!), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->string A2 A4), (A5 is A3 ^ .hb), (open_append A5 A6), \n (std.string.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_out A6), (log.private.logger A8 A1 => A0), \n (log.private.logger-close A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 267,
                     "column": 0,
                     "character": 10575
@@ -19906,13 +18963,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -19927,8 +18982,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -19994,13 +19048,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-logging A0) :- (get-option elpi.hb.log _ , A1 = tt ;\n                       get-option elpi.hb.log.raw _ , A1 = ff), (!), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->string A2 A4), (A5 is A3 ^ .hb), (open_append A5 A6), \n (std.string.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_out A6), (log.private.logger A8 A1 => A0), \n (log.private.logger-close A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11).",
+                "rule_text": "(with-logging A0) :- (get-option elpi.hb.log _ , A1 = tt ;\n                       get-option elpi.hb.log.raw _ , A1 = ff), (!), \n (get-option elpi.loc A2), (loc.fields A2 A3 _ _ _ _), \n (std.any->string A2 A4), (A5 is A3 ^ .hb), (open_append A5 A6), \n (std.string.concat \n [, HIERARCHY BUILDER PATCH v1, A4, ] A7), \n (output A6 A7), (close_out A6), (log.private.logger A8 A1 => A0), \n (log.private.logger-close A8), (std.intersperse coq.pp.spc A8 A9), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A9) A10), (open_append A5 A11), \n (output A11 A10), (close_out A11).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 267,
                     "column": 0,
                     "character": 10575
@@ -20025,13 +19077,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -20046,8 +19096,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -20079,8 +19128,7 @@
       "Inference",
       {
         "current_goal_id": 1198,
-        "current_goal_text":
-          "with-logging\n (instance.declare-const _ \n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _)",
+        "current_goal_text": "with-logging\n (instance.declare-const _ \n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _)",
         "current_goal_predicate": "with-logging",
         "failed_attempts": [],
         "successful_attempts": [
@@ -20089,13 +19137,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(with-logging A0) :- (get-option log tt , A1 = tt ;\n                       get-option log.raw tt , A1 = ff), (!), \n (log.private.logger A2 A1 => A0), (log.private.logger-close A2), \n (std.intersperse coq.pp.spc A2 A3), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A3) A4), (coq.say (* \n A4 \n*)).",
+                  "rule_text": "(with-logging A0) :- (get-option log tt , A1 = tt ;\n                       get-option log.raw tt , A1 = ff), (!), \n (log.private.logger A2 A1 => A0), (log.private.logger-close A2), \n (std.intersperse coq.pp.spc A2 A3), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A3) A4), (coq.say (* \n A4 \n*)).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                       "line": 283,
                       "column": 0,
                       "character": 11151
@@ -20112,14 +19158,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "get-option log tt , X65 = tt ; get-option log.raw tt , X65 = ff",
+                "goal_text": "get-option log tt , X65 = tt ; get-option log.raw tt , X65 = ff",
                 "goal_id": 1229
               },
               { "goal_text": "!", "goal_id": 1230 },
               {
-                "goal_text":
-                  "log.private.logger X66 X65 =>\n instance.declare-const _ \n  (app\n    [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n     global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _",
+                "goal_text": "log.private.logger X66 X65 =>\n instance.declare-const _ \n  (app\n    [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n     global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _",
                 "goal_id": 1231
               },
               {
@@ -20131,8 +19175,7 @@
                 "goal_id": 1233
               },
               {
-                "goal_text":
-                  "coq.pp->string (coq.pp.box (coq.pp.v 0) X67) X68",
+                "goal_text": "coq.pp->string (coq.pp.box (coq.pp.v 0) X67) X68",
                 "goal_id": 1234
               },
               { "goal_text": "coq.say (* \n X68 \n*)", "goal_id": 1235 }
@@ -20146,13 +19189,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-logging A0) :- (get-option log tt , A1 = tt ;\n                       get-option log.raw tt , A1 = ff), (!), \n (log.private.logger A2 A1 => A0), (log.private.logger-close A2), \n (std.intersperse coq.pp.spc A2 A3), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A3) A4), (coq.say (* \n A4 \n*)).",
+                "rule_text": "(with-logging A0) :- (get-option log tt , A1 = tt ;\n                       get-option log.raw tt , A1 = ff), (!), \n (log.private.logger A2 A1 => A0), (log.private.logger-close A2), \n (std.intersperse coq.pp.spc A2 A3), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A3) A4), (coq.say (* \n A4 \n*)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 283,
                     "column": 0,
                     "character": 11151
@@ -20177,13 +19218,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -20198,8 +19237,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -20231,8 +19269,7 @@
       "Inference",
       {
         "current_goal_id": 1229,
-        "current_goal_text":
-          "get-option log tt , X65 = tt ; get-option log.raw tt , X65 = ff",
+        "current_goal_text": "get-option log tt , X65 = tt ; get-option log.raw tt , X65 = ff",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -20291,13 +19328,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-logging A0) :- (get-option log tt , A1 = tt ;\n                       get-option log.raw tt , A1 = ff), (!), \n (log.private.logger A2 A1 => A0), (log.private.logger-close A2), \n (std.intersperse coq.pp.spc A2 A3), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A3) A4), (coq.say (* \n A4 \n*)).",
+                "rule_text": "(with-logging A0) :- (get-option log tt , A1 = tt ;\n                       get-option log.raw tt , A1 = ff), (!), \n (log.private.logger A2 A1 => A0), (log.private.logger-close A2), \n (std.intersperse coq.pp.spc A2 A3), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A3) A4), (coq.say (* \n A4 \n*)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 283,
                     "column": 0,
                     "character": 11151
@@ -20322,13 +19357,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -20343,8 +19376,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -20422,13 +19454,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-logging A0) :- (get-option log tt , A1 = tt ;\n                       get-option log.raw tt , A1 = ff), (!), \n (log.private.logger A2 A1 => A0), (log.private.logger-close A2), \n (std.intersperse coq.pp.spc A2 A3), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A3) A4), (coq.say (* \n A4 \n*)).",
+                "rule_text": "(with-logging A0) :- (get-option log tt , A1 = tt ;\n                       get-option log.raw tt , A1 = ff), (!), \n (log.private.logger A2 A1 => A0), (log.private.logger-close A2), \n (std.intersperse coq.pp.spc A2 A3), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A3) A4), (coq.say (* \n A4 \n*)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 283,
                     "column": 0,
                     "character": 11151
@@ -20453,13 +19483,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -20474,8 +19502,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -20541,13 +19568,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-logging A0) :- (get-option log tt , A1 = tt ;\n                       get-option log.raw tt , A1 = ff), (!), \n (log.private.logger A2 A1 => A0), (log.private.logger-close A2), \n (std.intersperse coq.pp.spc A2 A3), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A3) A4), (coq.say (* \n A4 \n*)).",
+                "rule_text": "(with-logging A0) :- (get-option log tt , A1 = tt ;\n                       get-option log.raw tt , A1 = ff), (!), \n (log.private.logger A2 A1 => A0), (log.private.logger-close A2), \n (std.intersperse coq.pp.spc A2 A3), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A3) A4), (coq.say (* \n A4 \n*)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 283,
                     "column": 0,
                     "character": 11151
@@ -20572,13 +19597,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -20593,8 +19616,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -20626,8 +19648,7 @@
       "Inference",
       {
         "current_goal_id": 1229,
-        "current_goal_text":
-          "get-option log tt , X65 = tt ; get-option log.raw tt , X65 = ff",
+        "current_goal_text": "get-option log tt , X65 = tt ; get-option log.raw tt , X65 = ff",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -20686,13 +19707,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-logging A0) :- (get-option log tt , A1 = tt ;\n                       get-option log.raw tt , A1 = ff), (!), \n (log.private.logger A2 A1 => A0), (log.private.logger-close A2), \n (std.intersperse coq.pp.spc A2 A3), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A3) A4), (coq.say (* \n A4 \n*)).",
+                "rule_text": "(with-logging A0) :- (get-option log tt , A1 = tt ;\n                       get-option log.raw tt , A1 = ff), (!), \n (log.private.logger A2 A1 => A0), (log.private.logger-close A2), \n (std.intersperse coq.pp.spc A2 A3), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A3) A4), (coq.say (* \n A4 \n*)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 283,
                     "column": 0,
                     "character": 11151
@@ -20717,13 +19736,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -20738,8 +19755,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -20817,13 +19833,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-logging A0) :- (get-option log tt , A1 = tt ;\n                       get-option log.raw tt , A1 = ff), (!), \n (log.private.logger A2 A1 => A0), (log.private.logger-close A2), \n (std.intersperse coq.pp.spc A2 A3), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A3) A4), (coq.say (* \n A4 \n*)).",
+                "rule_text": "(with-logging A0) :- (get-option log tt , A1 = tt ;\n                       get-option log.raw tt , A1 = ff), (!), \n (log.private.logger A2 A1 => A0), (log.private.logger-close A2), \n (std.intersperse coq.pp.spc A2 A3), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A3) A4), (coq.say (* \n A4 \n*)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 283,
                     "column": 0,
                     "character": 11151
@@ -20848,13 +19862,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -20869,8 +19881,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -20936,13 +19947,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-logging A0) :- (get-option log tt , A1 = tt ;\n                       get-option log.raw tt , A1 = ff), (!), \n (log.private.logger A2 A1 => A0), (log.private.logger-close A2), \n (std.intersperse coq.pp.spc A2 A3), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A3) A4), (coq.say (* \n A4 \n*)).",
+                "rule_text": "(with-logging A0) :- (get-option log tt , A1 = tt ;\n                       get-option log.raw tt , A1 = ff), (!), \n (log.private.logger A2 A1 => A0), (log.private.logger-close A2), \n (std.intersperse coq.pp.spc A2 A3), \n (coq.pp->string (coq.pp.box (coq.pp.v 0) A3) A4), (coq.say (* \n A4 \n*)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 283,
                     "column": 0,
                     "character": 11151
@@ -20967,13 +19976,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -20988,8 +19995,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -21021,8 +20027,7 @@
       "Inference",
       {
         "current_goal_id": 1198,
-        "current_goal_text":
-          "with-logging\n (instance.declare-const _ \n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _)",
+        "current_goal_text": "with-logging\n (instance.declare-const _ \n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _)",
         "current_goal_predicate": "with-logging",
         "failed_attempts": [],
         "successful_attempts": [
@@ -21035,8 +20040,7 @@
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                       "line": 289,
                       "column": 0,
                       "character": 11419
@@ -21053,8 +20057,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "instance.declare-const _ \n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _",
+                "goal_text": "instance.declare-const _ \n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _",
                 "goal_id": 1242
               }
             ],
@@ -21071,8 +20074,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -21097,13 +20099,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -21118,8 +20118,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -21151,8 +20150,7 @@
       "Inference",
       {
         "current_goal_id": 1242,
-        "current_goal_text":
-          "instance.declare-const _ \n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _",
+        "current_goal_text": "instance.declare-const _ \n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` X0 c0 \\ c0]) (arity X1) _",
         "current_goal_predicate": "instance.declare-const",
         "failed_attempts": [],
         "successful_attempts": [
@@ -21161,13 +20159,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                  "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                       "line": 25,
                       "column": 0,
                       "character": 1064
@@ -21186,8 +20182,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.do!\n [std.assert-ok! (coq.elaborate-arity-skeleton (arity X1) _ X69) \n   Definition type illtyped, coq.arity->term X69 X70, \n  std.assert-ok!\n   (coq.elaborate-skeleton\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0]) X70 X71) \n   Definition illtyped, \n  if (X69 = arity X72) \n   (if-verbose (coq.say HB: skipping section opening) , X73 = X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postulate-arity X69 [] X71 X73 X72)), \n  std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if (X69 = arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [std.assert-ok! (coq.elaborate-arity-skeleton (arity X1) _ X69) \n   Definition type illtyped, coq.arity->term X69 X70, \n  std.assert-ok!\n   (coq.elaborate-skeleton\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0]) X70 X71) \n   Definition illtyped, \n  if (X69 = arity X72) \n   (if-verbose (coq.say HB: skipping section opening) , X73 = X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postulate-arity X69 [] X71 X73 X72)), \n  std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if (X69 = arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
                 "goal_id": 1243
               }
             ],
@@ -21200,13 +20195,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -21225,8 +20218,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -21251,13 +20243,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -21272,8 +20262,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -21305,8 +20294,7 @@
       "Inference",
       {
         "current_goal_id": 1243,
-        "current_goal_text":
-          "std.do!\n [std.assert-ok! (coq.elaborate-arity-skeleton (arity X1) _ X69) \n   Definition type illtyped, coq.arity->term X69 X70, \n  std.assert-ok!\n   (coq.elaborate-skeleton\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0]) X70 X71) \n   Definition illtyped, \n  if (X69 = arity X72) \n   (if-verbose (coq.say HB: skipping section opening) , X73 = X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postulate-arity X69 [] X71 X73 X72)), \n  std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if (X69 = arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [std.assert-ok! (coq.elaborate-arity-skeleton (arity X1) _ X69) \n   Definition type illtyped, coq.arity->term X69 X70, \n  std.assert-ok!\n   (coq.elaborate-skeleton\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0]) X70 X71) \n   Definition illtyped, \n  if (X69 = arity X72) \n   (if-verbose (coq.say HB: skipping section opening) , X73 = X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postulate-arity X69 [] X71 X73 X72)), \n  std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if (X69 = arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -21315,8 +20303,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -21341,14 +20328,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.assert-ok! (coq.elaborate-arity-skeleton (arity X1) _ X69) \n Definition type illtyped",
+                "goal_text": "std.assert-ok! (coq.elaborate-arity-skeleton (arity X1) _ X69) \n Definition type illtyped",
                 "goal_id": 1244
               },
               { "goal_text": "!", "goal_id": 1245 },
               {
-                "goal_text":
-                  "std.do!\n [coq.arity->term X69 X70, \n  std.assert-ok!\n   (coq.elaborate-skeleton\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0]) X70 X71) \n   Definition illtyped, \n  if (X69 = arity X72) \n   (if-verbose (coq.say HB: skipping section opening) , X73 = X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postulate-arity X69 [] X71 X73 X72)), \n  std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if (X69 = arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [coq.arity->term X69 X70, \n  std.assert-ok!\n   (coq.elaborate-skeleton\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0]) X70 X71) \n   Definition illtyped, \n  if (X69 = arity X72) \n   (if-verbose (coq.say HB: skipping section opening) , X73 = X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postulate-arity X69 [] X71 X73 X72)), \n  std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if (X69 = arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
                 "goal_id": 1246
               }
             ],
@@ -21380,13 +20365,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -21405,8 +20388,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -21431,13 +20413,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -21452,8 +20432,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -21485,8 +20464,7 @@
       "Inference",
       {
         "current_goal_id": 1244,
-        "current_goal_text":
-          "std.assert-ok! (coq.elaborate-arity-skeleton (arity X1) _ X69) \n Definition type illtyped",
+        "current_goal_text": "std.assert-ok! (coq.elaborate-arity-skeleton (arity X1) _ X69) \n Definition type illtyped",
         "current_goal_predicate": "std.assert-ok!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -21495,8 +20473,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                  "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -21518,14 +20495,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.elaborate-arity-skeleton (arity X1) _ X69 X92",
+                "goal_text": "coq.elaborate-arity-skeleton (arity X1) _ X69 X92",
                 "goal_id": 1247
               },
               { "goal_text": "!", "goal_id": 1248 },
               {
-                "goal_text":
-                  "X92 = ok ;\n X92 = error X93 , std.fatal-error-w-data Definition type illtyped X93",
+                "goal_text": "X92 = ok ;\n X92 = error X93 , std.fatal-error-w-data Definition type illtyped X93",
                 "goal_id": 1249
               },
               { "goal_text": "!", "goal_id": 1250 }
@@ -21539,8 +20514,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -21578,13 +20552,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -21603,8 +20575,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -21629,13 +20600,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -21650,8 +20619,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -21683,8 +20651,7 @@
       "Inference",
       {
         "current_goal_id": 1247,
-        "current_goal_text":
-          "coq.elaborate-arity-skeleton (arity X1) _ X69 X92",
+        "current_goal_text": "coq.elaborate-arity-skeleton (arity X1) _ X69 X92",
         "current_goal_predicate": "coq.elaborate-arity-skeleton",
         "failed_attempts": [],
         "successful_attempts": [
@@ -21693,8 +20660,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(coq.elaborate-arity-skeleton (arity A0) A1 (arity A2) A3) :- (coq.elaborate-ty-skeleton\n                                                                A0 A1 A2 A3).",
+                  "rule_text": "(coq.elaborate-arity-skeleton (arity A0) A1 (arity A2) A3) :- (coq.elaborate-ty-skeleton\n                                                                A0 A1 A2 A3).",
                   "rule_loc": [
                     "File",
                     {
@@ -21727,8 +20693,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.elaborate-arity-skeleton (arity A0) A1 (arity A2) A3) :- (coq.elaborate-ty-skeleton\n                                                                A0 A1 A2 A3).",
+                "rule_text": "(coq.elaborate-arity-skeleton (arity A0) A1 (arity A2) A3) :- (coq.elaborate-ty-skeleton\n                                                                A0 A1 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -21747,8 +20712,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -21786,13 +20750,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -21811,8 +20773,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -21837,13 +20798,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -21858,8 +20817,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -21898,8 +20856,7 @@
           {
             "attempt": {
               "rule": [
-                "BuiltinRule",
-                [ "FFI", "coq.elaborate-ty-skeleton" ]
+                "BuiltinRule", [ "FFI", "coq.elaborate-ty-skeleton" ]
               ],
               "events": []
             },
@@ -21910,8 +20867,7 @@
               },
               { "goal_text": "X94 = X96", "goal_id": 1253 },
               {
-                "goal_text":
-                  "declare-evar [] (X97) (sort (typ «interleave_context.403»)) (X96)",
+                "goal_text": "declare-evar [] (X97) (sort (typ «interleave_context.403»)) (X96)",
                 "goal_id": 1254
               },
               { "goal_text": "X92 = ok", "goal_id": 1255 }
@@ -21930,8 +20886,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.elaborate-arity-skeleton (arity A0) A1 (arity A2) A3) :- (coq.elaborate-ty-skeleton\n                                                                A0 A1 A2 A3).",
+                "rule_text": "(coq.elaborate-arity-skeleton (arity A0) A1 (arity A2) A3) :- (coq.elaborate-ty-skeleton\n                                                                A0 A1 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -21950,8 +20905,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -21989,13 +20943,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -22014,8 +20966,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -22040,13 +20991,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -22061,8 +21010,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -22125,8 +21073,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.elaborate-arity-skeleton (arity A0) A1 (arity A2) A3) :- (coq.elaborate-ty-skeleton\n                                                                A0 A1 A2 A3).",
+                "rule_text": "(coq.elaborate-arity-skeleton (arity A0) A1 (arity A2) A3) :- (coq.elaborate-ty-skeleton\n                                                                A0 A1 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -22145,8 +21092,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -22184,13 +21130,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -22209,8 +21153,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -22235,13 +21178,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -22256,8 +21197,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -22318,8 +21258,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.elaborate-arity-skeleton (arity A0) A1 (arity A2) A3) :- (coq.elaborate-ty-skeleton\n                                                                A0 A1 A2 A3).",
+                "rule_text": "(coq.elaborate-arity-skeleton (arity A0) A1 (arity A2) A3) :- (coq.elaborate-ty-skeleton\n                                                                A0 A1 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -22338,8 +21277,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -22377,13 +21315,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -22402,8 +21338,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -22428,13 +21363,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -22449,8 +21382,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -22482,8 +21414,7 @@
       "Inference",
       {
         "current_goal_id": 1254,
-        "current_goal_text":
-          "declare-evar [] (X97) (sort (typ «interleave_context.403»)) (X96)",
+        "current_goal_text": "declare-evar [] (X97) (sort (typ «interleave_context.403»)) (X96)",
         "current_goal_predicate": "declare-evar",
         "failed_attempts": [],
         "successful_attempts": [
@@ -22492,8 +21423,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(declare-evar A0 A1 A2 A3) :- (declare_constraint (declare-evar A0 A1 A2 A3) \n                                [A1]).",
+                  "rule_text": "(declare-evar A0 A1 A2 A3) :- (declare_constraint (declare-evar A0 A1 A2 A3) \n                                [A1]).",
                   "rule_loc": [
                     "File",
                     {
@@ -22514,8 +21444,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "declare_constraint\n (declare-evar [] (X97) (sort (typ «interleave_context.403»)) (X96)) [\n X97]",
+                "goal_text": "declare_constraint\n (declare-evar [] (X97) (sort (typ «interleave_context.403»)) (X96)) [\n X97]",
                 "goal_id": 1256
               }
             ],
@@ -22528,8 +21457,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(declare-evar A0 A1 A2 A3) :- (declare_constraint (declare-evar A0 A1 A2 A3) \n                                [A1]).",
+                "rule_text": "(declare-evar A0 A1 A2 A3) :- (declare_constraint (declare-evar A0 A1 A2 A3) \n                                [A1]).",
                 "rule_loc": [
                   "File",
                   {
@@ -22553,8 +21481,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.elaborate-arity-skeleton (arity A0) A1 (arity A2) A3) :- (coq.elaborate-ty-skeleton\n                                                                A0 A1 A2 A3).",
+                "rule_text": "(coq.elaborate-arity-skeleton (arity A0) A1 (arity A2) A3) :- (coq.elaborate-ty-skeleton\n                                                                A0 A1 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -22573,8 +21500,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -22612,13 +21538,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -22637,8 +21561,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -22663,13 +21586,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -22684,8 +21605,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -22717,11 +21637,9 @@
       "Suspend",
       {
         "suspend_goal_id": 1256,
-        "suspend_goal_text":
-          "declare_constraint\n (declare-evar [] (X97) (sort (typ «interleave_context.403»)) (X96)) [\n X97]",
+        "suspend_goal_text": "declare_constraint\n (declare-evar [] (X97) (sort (typ «interleave_context.403»)) (X96)) [\n X97]",
         "suspend_sibling": {
-          "goal_text":
-            "declare-evar [] (X97) (sort (typ «interleave_context.403»)) (X96)",
+          "goal_text": "declare-evar [] (X97) (sort (typ «interleave_context.403»)) (X96)",
           "goal_id": 1257
         },
         "suspend_stack": [
@@ -22734,8 +21652,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(declare-evar A0 A1 A2 A3) :- (declare_constraint (declare-evar A0 A1 A2 A3) \n                                [A1]).",
+                "rule_text": "(declare-evar A0 A1 A2 A3) :- (declare_constraint (declare-evar A0 A1 A2 A3) \n                                [A1]).",
                 "rule_loc": [
                   "File",
                   {
@@ -22759,8 +21676,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.elaborate-arity-skeleton (arity A0) A1 (arity A2) A3) :- (coq.elaborate-ty-skeleton\n                                                                A0 A1 A2 A3).",
+                "rule_text": "(coq.elaborate-arity-skeleton (arity A0) A1 (arity A2) A3) :- (coq.elaborate-ty-skeleton\n                                                                A0 A1 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -22779,8 +21695,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -22818,13 +21733,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -22843,8 +21756,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -22869,13 +21781,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -22890,8 +21800,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -22926,8 +21835,7 @@
         "chr_successful_attempts": [
           {
             "chr_attempt": {
-              "chr_text":
-                " \\ (declare-evar A0 A1 A2 A3)  <=> (A0 => evar A1 A2 A3)",
+              "chr_text": " \\ (declare-evar A0 A1 A2 A3)  <=> (A0 => evar A1 A2 A3)",
               "chr_loc": {
                 "filename": "coq-builtin.elpi",
                 "line": 178,
@@ -22939,8 +21847,7 @@
                   "step_id": 0,
                   "runtime_id": 9,
                   "step": [
-                    "Init",
-                    { "goal_text": "true", "goal_id": 1259 }
+                    "Init", { "goal_text": "true", "goal_id": 1259 }
                   ],
                   "color": "Grey"
                 },
@@ -23009,8 +21916,7 @@
             "chr_removed_goals": [ 1257 ],
             "chr_new_goals": [
               {
-                "goal_text":
-                  "_ => [] => evar X97 (sort (typ «interleave_context.403»)) X96",
+                "goal_text": "_ => [] => evar X97 (sort (typ «interleave_context.403»)) X96",
                 "goal_id": 1260
               }
             ]
@@ -23018,8 +21924,7 @@
         ],
         "chr_store_before": [
           {
-            "goal_text":
-              " declare-evar [] (X97) (sort (typ «interleave_context.403»)) (X96)  /* suspended on X97 */",
+            "goal_text": " declare-evar [] (X97) (sort (typ «interleave_context.403»)) (X96)  /* suspended on X97 */",
             "goal_id": 1257
           }
         ],
@@ -23035,8 +21940,7 @@
       "Inference",
       {
         "current_goal_id": 1260,
-        "current_goal_text":
-          "_ => [] => evar X97 (sort (typ «interleave_context.403»)) X96",
+        "current_goal_text": "_ => [] => evar X97 (sort (typ «interleave_context.403»)) X96",
         "current_goal_predicate": "=>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -23047,8 +21951,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "[] => evar X97 (sort (typ «interleave_context.403»)) X96",
+                "goal_text": "[] => evar X97 (sort (typ «interleave_context.403»)) X96",
                 "goal_id": 1261
               }
             ],
@@ -23074,8 +21977,7 @@
       "Inference",
       {
         "current_goal_id": 1261,
-        "current_goal_text":
-          "[] => evar X97 (sort (typ «interleave_context.403»)) X96",
+        "current_goal_text": "[] => evar X97 (sort (typ «interleave_context.403»)) X96",
         "current_goal_predicate": "=>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -23086,8 +21988,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "evar X97 (sort (typ «interleave_context.403»)) X96",
+                "goal_text": "evar X97 (sort (typ «interleave_context.403»)) X96",
                 "goal_id": 1262
               }
             ],
@@ -23118,8 +22019,7 @@
       "Inference",
       {
         "current_goal_id": 1262,
-        "current_goal_text":
-          "evar X97 (sort (typ «interleave_context.403»)) X96",
+        "current_goal_text": "evar X97 (sort (typ «interleave_context.403»)) X96",
         "current_goal_predicate": "evar",
         "failed_attempts": [],
         "successful_attempts": [
@@ -23128,8 +22028,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                  "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
                   "rule_loc": [
                     "File",
                     {
@@ -23150,8 +22049,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1263 },
               {
-                "goal_text":
-                  "if (var X96) \n (declare_constraint (evar X97 (sort (typ «interleave_context.403»)) X96) \n   [X97, X96]) true",
+                "goal_text": "if (var X96) \n (declare_constraint (evar X97 (sort (typ «interleave_context.403»)) X96) \n   [X97, X96]) true",
                 "goal_id": 1264
               }
             ],
@@ -23164,8 +22062,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
                 "rule_loc": [
                   "File",
                   {
@@ -23205,8 +22102,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "evar X97 (sort (typ «interleave_context.403»)) X96",
+              "goal_text": "evar X97 (sort (typ «interleave_context.403»)) X96",
               "goal_id": 1262
             },
             "cut_branch": {
@@ -23234,8 +22130,7 @@
       "Inference",
       {
         "current_goal_id": 1264,
-        "current_goal_text":
-          "if (var X96) \n (declare_constraint (evar X97 (sort (typ «interleave_context.403»)) X96) \n   [X97, X96]) true",
+        "current_goal_text": "if (var X96) \n (declare_constraint (evar X97 (sort (typ «interleave_context.403»)) X96) \n   [X97, X96]) true",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -23268,8 +22163,7 @@
               { "goal_text": "var X96", "goal_id": 1265 },
               { "goal_text": "!", "goal_id": 1266 },
               {
-                "goal_text":
-                  "declare_constraint (evar X97 (sort (typ «interleave_context.403»)) X96) \n [X97, X96]",
+                "goal_text": "declare_constraint (evar X97 (sort (typ «interleave_context.403»)) X96) \n [X97, X96]",
                 "goal_id": 1267
               }
             ],
@@ -23301,8 +22195,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
                 "rule_loc": [
                   "File",
                   {
@@ -23382,8 +22275,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
                 "rule_loc": [
                   "File",
                   {
@@ -23423,8 +22315,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "if (var X96) \n (declare_constraint (evar X97 (sort (typ «interleave_context.403»)) X96) \n   [X97, X96]) true",
+              "goal_text": "if (var X96) \n (declare_constraint (evar X97 (sort (typ «interleave_context.403»)) X96) \n   [X97, X96]) true",
               "goal_id": 1264
             },
             "cut_branch": {
@@ -23452,8 +22343,7 @@
       "Suspend",
       {
         "suspend_goal_id": 1267,
-        "suspend_goal_text":
-          "declare_constraint (evar X97 (sort (typ «interleave_context.403»)) X96) \n [X97, X96]",
+        "suspend_goal_text": "declare_constraint (evar X97 (sort (typ «interleave_context.403»)) X96) \n [X97, X96]",
         "suspend_sibling": {
           "goal_text": "evar X97 (sort (typ «interleave_context.403»)) X96",
           "goal_id": 1268
@@ -23487,8 +22377,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
                 "rule_loc": [
                   "File",
                   {
@@ -23554,8 +22443,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.elaborate-arity-skeleton (arity A0) A1 (arity A2) A3) :- (coq.elaborate-ty-skeleton\n                                                                A0 A1 A2 A3).",
+                "rule_text": "(coq.elaborate-arity-skeleton (arity A0) A1 (arity A2) A3) :- (coq.elaborate-ty-skeleton\n                                                                A0 A1 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -23574,8 +22462,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -23613,13 +22500,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -23638,8 +22523,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -23664,13 +22548,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -23685,8 +22567,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -23721,13 +22602,11 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "std.assert-ok! (coq.elaborate-arity-skeleton (arity X1) _ X69) \n Definition type illtyped",
+              "goal_text": "std.assert-ok! (coq.elaborate-arity-skeleton (arity X1) _ X69) \n Definition type illtyped",
               "goal_id": 1244
             },
             "cut_branch": {
-              "rule_text":
-                "(std.assert-ok! _ A0) :- (std.fatal-error-w-data A0 no diagnostic returned).",
+              "rule_text": "(std.assert-ok! _ A0) :- (std.fatal-error-w-data A0 no diagnostic returned).",
               "rule_loc": [
                 "File",
                 {
@@ -23751,8 +22630,7 @@
       "Inference",
       {
         "current_goal_id": 1249,
-        "current_goal_text":
-          "ok = ok ;\n ok = error X93 , std.fatal-error-w-data Definition type illtyped X93",
+        "current_goal_text": "ok = ok ;\n ok = error X93 , std.fatal-error-w-data Definition type illtyped X93",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -23804,8 +22682,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -23843,13 +22720,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -23868,8 +22743,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -23894,13 +22768,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -23915,8 +22787,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -23991,8 +22862,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -24030,13 +22900,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -24055,8 +22923,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -24081,13 +22948,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -24102,8 +22967,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -24138,8 +23002,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "X92 = ok ;\n X92 = error X93 , std.fatal-error-w-data Definition type illtyped X93",
+              "goal_text": "X92 = ok ;\n X92 = error X93 , std.fatal-error-w-data Definition type illtyped X93",
               "goal_id": 1249
             },
             "cut_branch": {
@@ -24173,8 +23036,7 @@
       "Inference",
       {
         "current_goal_id": 1246,
-        "current_goal_text":
-          "std.do!\n [coq.arity->term (arity (X96)) X70, \n  std.assert-ok!\n   (coq.elaborate-skeleton\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0]) X70 X71) \n   Definition illtyped, \n  if (arity (X96) = arity X72) \n   (if-verbose (coq.say HB: skipping section opening) , X73 = X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postulate-arity (arity (X96)) [] X71 X73 X72)), \n  std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if (arity (X96) = arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [coq.arity->term (arity (X96)) X70, \n  std.assert-ok!\n   (coq.elaborate-skeleton\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0]) X70 X71) \n   Definition illtyped, \n  if (arity (X96) = arity X72) \n   (if-verbose (coq.say HB: skipping section opening) , X73 = X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postulate-arity (arity (X96)) [] X71 X73 X72)), \n  std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if (arity (X96) = arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -24183,8 +23045,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -24211,8 +23072,7 @@
               },
               { "goal_text": "!", "goal_id": 1271 },
               {
-                "goal_text":
-                  "std.do!\n [std.assert-ok!\n   (coq.elaborate-skeleton\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0]) X70 X71) \n   Definition illtyped, \n  if (arity (X96) = arity X72) \n   (if-verbose (coq.say HB: skipping section opening) , X73 = X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postulate-arity (arity (X96)) [] X71 X73 X72)), \n  std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if (arity (X96) = arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [std.assert-ok!\n   (coq.elaborate-skeleton\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0]) X70 X71) \n   Definition illtyped, \n  if (arity (X96) = arity X72) \n   (if-verbose (coq.say HB: skipping section opening) , X73 = X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postulate-arity (arity (X96)) [] X71 X73 X72)), \n  std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if (arity (X96) = arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
                 "goal_id": 1272
               }
             ],
@@ -24263,13 +23123,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -24288,8 +23146,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -24314,13 +23171,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -24335,8 +23190,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -24390,8 +23244,7 @@
                 }
               ],
               "events": [
-                [ "Assign", "A0 := X96" ],
-                [ "Assign", "X70 := X96" ]
+                [ "Assign", "A0 := X96" ], [ "Assign", "X70 := X96" ]
               ]
             },
             "siblings": [],
@@ -24461,13 +23314,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -24486,8 +23337,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -24512,13 +23362,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -24533,8 +23381,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -24572,8 +23419,7 @@
       "Inference",
       {
         "current_goal_id": 1272,
-        "current_goal_text":
-          "std.do!\n [std.assert-ok!\n   (coq.elaborate-skeleton\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0]) (X96) X71) \n   Definition illtyped, \n  if (arity (X96) = arity X72) \n   (if-verbose (coq.say HB: skipping section opening) , X73 = X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postulate-arity (arity (X96)) [] X71 X73 X72)), \n  std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if (arity (X96) = arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [std.assert-ok!\n   (coq.elaborate-skeleton\n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` X0 c0 \\ c0]) (X96) X71) \n   Definition illtyped, \n  if (arity (X96) = arity X72) \n   (if-verbose (coq.say HB: skipping section opening) , X73 = X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postulate-arity (arity (X96)) [] X71 X73 X72)), \n  std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if (arity (X96) = arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -24582,8 +23428,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -24608,14 +23453,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.assert-ok!\n (coq.elaborate-skeleton\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` X0 c0 \\ c0]) (X96) X71) \n Definition illtyped",
+                "goal_text": "std.assert-ok!\n (coq.elaborate-skeleton\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` X0 c0 \\ c0]) (X96) X71) \n Definition illtyped",
                 "goal_id": 1273
               },
               { "goal_text": "!", "goal_id": 1274 },
               {
-                "goal_text":
-                  "std.do!\n [if (arity (X96) = arity X72) \n   (if-verbose (coq.say HB: skipping section opening) , X73 = X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postulate-arity (arity (X96)) [] X71 X73 X72)), \n  std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if (arity (X96) = arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [if (arity (X96) = arity X72) \n   (if-verbose (coq.say HB: skipping section opening) , X73 = X71) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postulate-arity (arity (X96)) [] X71 X73 X72)), \n  std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if (arity (X96) = arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
                 "goal_id": 1275
               }
             ],
@@ -24685,13 +23528,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -24710,8 +23551,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -24736,13 +23576,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -24757,8 +23595,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -24790,8 +23627,7 @@
       "Inference",
       {
         "current_goal_id": 1273,
-        "current_goal_text":
-          "std.assert-ok!\n (coq.elaborate-skeleton\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` X0 c0 \\ c0]) (X96) X71) \n Definition illtyped",
+        "current_goal_text": "std.assert-ok!\n (coq.elaborate-skeleton\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` X0 c0 \\ c0]) (X96) X71) \n Definition illtyped",
         "current_goal_predicate": "std.assert-ok!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -24800,8 +23636,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                  "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -24823,14 +23658,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.elaborate-skeleton\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` X0 c0 \\ c0]) (X96) X71 X98",
+                "goal_text": "coq.elaborate-skeleton\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` X0 c0 \\ c0]) (X96) X71 X98",
                 "goal_id": 1276
               },
               { "goal_text": "!", "goal_id": 1277 },
               {
-                "goal_text":
-                  "X98 = ok ; X98 = error X99 , std.fatal-error-w-data Definition illtyped X99",
+                "goal_text": "X98 = ok ; X98 = error X99 , std.fatal-error-w-data Definition illtyped X99",
                 "goal_id": 1278
               },
               { "goal_text": "!", "goal_id": 1279 }
@@ -24844,8 +23677,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -24921,13 +23753,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -24946,8 +23776,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -24972,13 +23801,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -24993,8 +23820,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -25026,8 +23852,7 @@
       "Inference",
       {
         "current_goal_id": 1276,
-        "current_goal_text":
-          "coq.elaborate-skeleton\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` X0 c0 \\ c0]) (X96) X71 X98",
+        "current_goal_text": "coq.elaborate-skeleton\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` X0 c0 \\ c0]) (X96) X71 X98",
         "current_goal_predicate": "coq.elaborate-skeleton",
         "failed_attempts": [],
         "successful_attempts": [
@@ -25038,13 +23863,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "X96 = app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]",
+                "goal_text": "X96 = app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]",
                 "goal_id": 1280
               },
               {
-                "goal_text":
-                  "X71 =\n app\n  [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n   global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]",
+                "goal_text": "X71 =\n app\n  [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n   global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]",
                 "goal_id": 1281
               },
               { "goal_text": "X98 = ok", "goal_id": 1282 }
@@ -25063,8 +23886,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -25140,13 +23962,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -25165,8 +23985,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -25191,13 +24010,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -25212,8 +24029,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -25245,8 +24061,7 @@
       "Inference",
       {
         "current_goal_id": 1280,
-        "current_goal_text":
-          "X96 = app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]",
+        "current_goal_text": "X96 = app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]",
         "current_goal_predicate": "=",
         "failed_attempts": [],
         "successful_attempts": [
@@ -25281,8 +24096,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -25358,13 +24172,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -25383,8 +24195,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -25409,13 +24220,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -25430,8 +24239,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -25463,8 +24271,7 @@
       "Resume",
       [
         {
-          "goal_text":
-            "evar X97 (sort (typ «interleave_context.403»)) \n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
+          "goal_text": "evar X97 (sort (typ «interleave_context.403»)) \n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
           "goal_id": 1268
         }
       ]
@@ -25478,8 +24285,7 @@
       "Inference",
       {
         "current_goal_id": 1268,
-        "current_goal_text":
-          "evar X97 (sort (typ «interleave_context.403»)) \n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
+        "current_goal_text": "evar X97 (sort (typ «interleave_context.403»)) \n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
         "current_goal_predicate": "evar",
         "failed_attempts": [],
         "successful_attempts": [
@@ -25488,8 +24294,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                  "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
                   "rule_loc": [
                     "File",
                     {
@@ -25513,8 +24318,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1283 },
               {
-                "goal_text":
-                  "if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n (declare_constraint\n   (evar X97 (sort (typ «interleave_context.403»)) \n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   [X97, app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]]) \n true",
+                "goal_text": "if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n (declare_constraint\n   (evar X97 (sort (typ «interleave_context.403»)) \n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   [X97, app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]]) \n true",
                 "goal_id": 1284
               }
             ],
@@ -25527,8 +24331,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
                 "rule_loc": [
                   "File",
                   {
@@ -25576,8 +24379,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
                 "rule_loc": [
                   "File",
                   {
@@ -25617,8 +24419,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "evar X97 (sort (typ «interleave_context.403»)) X96",
+              "goal_text": "evar X97 (sort (typ «interleave_context.403»)) X96",
               "goal_id": 1268
             },
             "cut_branch": {
@@ -25646,8 +24447,7 @@
       "Inference",
       {
         "current_goal_id": 1284,
-        "current_goal_text":
-          "if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n (declare_constraint\n   (evar X97 (sort (typ «interleave_context.403»)) \n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   [X97, app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]]) \n true",
+        "current_goal_text": "if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n (declare_constraint\n   (evar X97 (sort (typ «interleave_context.403»)) \n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   [X97, app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]]) \n true",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -25681,14 +24481,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
+                "goal_text": "var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
                 "goal_id": 1285
               },
               { "goal_text": "!", "goal_id": 1286 },
               {
-                "goal_text":
-                  "declare_constraint\n (evar X97 (sort (typ «interleave_context.403»)) \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n [X97, app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]]",
+                "goal_text": "declare_constraint\n (evar X97 (sort (typ «interleave_context.403»)) \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n [X97, app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]]",
                 "goal_id": 1287
               }
             ],
@@ -25720,8 +24518,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
                 "rule_loc": [
                   "File",
                   {
@@ -25769,8 +24566,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
                 "rule_loc": [
                   "File",
                   {
@@ -25807,8 +24603,7 @@
       "Inference",
       {
         "current_goal_id": 1285,
-        "current_goal_text":
-          "var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
+        "current_goal_text": "var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
         "current_goal_predicate": "var",
         "failed_attempts": [
           { "rule": [ "BuiltinRule", [ "FFI", "var" ] ], "events": [] }
@@ -25844,8 +24639,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
                 "rule_loc": [
                   "File",
                   {
@@ -25893,8 +24687,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
                 "rule_loc": [
                   "File",
                   {
@@ -25931,8 +24724,7 @@
       "Inference",
       {
         "current_goal_id": 1284,
-        "current_goal_text":
-          "if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n (declare_constraint\n   (evar X97 (sort (typ «interleave_context.403»)) \n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   [X97, app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]]) \n true",
+        "current_goal_text": "if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n (declare_constraint\n   (evar X97 (sort (typ «interleave_context.403»)) \n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   [X97, app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]]) \n true",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -25984,8 +24776,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
                 "rule_loc": [
                   "File",
                   {
@@ -26033,8 +24824,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
                 "rule_loc": [
                   "File",
                   {
@@ -26142,8 +24932,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
                 "rule_loc": [
                   "File",
                   {
@@ -26191,8 +24980,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
+                "rule_text": "(evar (as uvar A0) A1 A2) :- (!), \n (if (var A2) (declare_constraint (evar A0 A1 A2) [A0, A2]) true).",
                 "rule_loc": [
                   "File",
                   {
@@ -26229,8 +25017,7 @@
       "Inference",
       {
         "current_goal_id": 1281,
-        "current_goal_text":
-          "X71 =\n app\n  [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n   global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]",
+        "current_goal_text": "X71 =\n app\n  [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n   global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]",
         "current_goal_predicate": "=",
         "failed_attempts": [],
         "successful_attempts": [
@@ -26264,8 +25051,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -26341,13 +25127,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -26366,8 +25150,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -26392,13 +25175,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -26413,8 +25194,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -26475,8 +25255,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -26552,13 +25331,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -26577,8 +25354,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -26603,13 +25379,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -26624,8 +25398,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -26660,13 +25433,11 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "std.assert-ok!\n (coq.elaborate-skeleton\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` X0 c0 \\ c0]) (X96) X71) \n Definition illtyped",
+              "goal_text": "std.assert-ok!\n (coq.elaborate-skeleton\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` X0 c0 \\ c0]) (X96) X71) \n Definition illtyped",
               "goal_id": 1273
             },
             "cut_branch": {
-              "rule_text":
-                "(std.assert-ok! _ A0) :- (std.fatal-error-w-data A0 no diagnostic returned).",
+              "rule_text": "(std.assert-ok! _ A0) :- (std.fatal-error-w-data A0 no diagnostic returned).",
               "rule_loc": [
                 "File",
                 {
@@ -26690,8 +25461,7 @@
       "Inference",
       {
         "current_goal_id": 1278,
-        "current_goal_text":
-          "ok = ok ; ok = error X99 , std.fatal-error-w-data Definition illtyped X99",
+        "current_goal_text": "ok = ok ; ok = error X99 , std.fatal-error-w-data Definition illtyped X99",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -26743,8 +25513,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -26820,13 +25589,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -26845,8 +25612,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -26871,13 +25637,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -26892,8 +25656,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -26968,8 +25731,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -27045,13 +25807,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -27070,8 +25830,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -27096,13 +25855,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -27117,8 +25874,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -27153,8 +25909,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "X98 = ok ; X98 = error X99 , std.fatal-error-w-data Definition illtyped X99",
+              "goal_text": "X98 = ok ; X98 = error X99 , std.fatal-error-w-data Definition illtyped X99",
               "goal_id": 1278
             },
             "cut_branch": {
@@ -27188,8 +25943,7 @@
       "Inference",
       {
         "current_goal_id": 1275,
-        "current_goal_text":
-          "std.do!\n [if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity X72) \n   (if-verbose (coq.say HB: skipping section opening) ,\n     X73 =\n      app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postulate-arity\n       (arity\n         (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n       [] \n       (app\n         [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n          global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X73 \n       X72)), \n  std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity X72) \n   (if-verbose (coq.say HB: skipping section opening) ,\n     X73 =\n      app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n   (,\n     (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n     (log.coq.env.begin-section X76) \n     (instance.private.postulate-arity\n       (arity\n         (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n       [] \n       (app\n         [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n          global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X73 \n       X72)), \n  std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -27198,8 +25952,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -27224,14 +25977,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if\n (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n   arity X72) \n (if-verbose (coq.say HB: skipping section opening) ,\n   X73 =\n    app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n (, (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n   (log.coq.env.begin-section X76) \n   (instance.private.postulate-arity\n     (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n     [] \n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X73 \n     X72))",
+                "goal_text": "if\n (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n   arity X72) \n (if-verbose (coq.say HB: skipping section opening) ,\n   X73 =\n    app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n (, (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n   (log.coq.env.begin-section X76) \n   (instance.private.postulate-arity\n     (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n     [] \n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X73 \n     X72))",
                 "goal_id": 1290
               },
               { "goal_text": "!", "goal_id": 1291 },
               {
-                "goal_text":
-                  "std.do!\n [std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [std.assert! (coq.safe-dest-app X72 (global X77) X78) \n   The type of the instance is not a factory, factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging X73 X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 X72 ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
                 "goal_id": 1292
               }
             ],
@@ -27320,13 +26071,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -27345,8 +26094,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -27371,13 +26119,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -27392,8 +26138,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -27425,8 +26170,7 @@
       "Inference",
       {
         "current_goal_id": 1290,
-        "current_goal_text":
-          "if\n (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n   arity X72) \n (if-verbose (coq.say HB: skipping section opening) ,\n   X73 =\n    app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n (, (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n   (log.coq.env.begin-section X76) \n   (instance.private.postulate-arity\n     (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n     [] \n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X73 \n     X72))",
+        "current_goal_text": "if\n (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n   arity X72) \n (if-verbose (coq.say HB: skipping section opening) ,\n   X73 =\n    app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n (, (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n   (log.coq.env.begin-section X76) \n   (instance.private.postulate-arity\n     (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n     [] \n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X73 \n     X72))",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -27460,14 +26204,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n arity X72",
+                "goal_text": "arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n arity X72",
                 "goal_id": 1293
               },
               { "goal_text": "!", "goal_id": 1294 },
               {
-                "goal_text":
-                  "if-verbose (coq.say HB: skipping section opening) ,\n X73 =\n  app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]",
+                "goal_text": "if-verbose (coq.say HB: skipping section opening) ,\n X73 =\n  app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]",
                 "goal_id": 1295
               }
             ],
@@ -27575,13 +26317,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -27600,8 +26340,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -27626,13 +26365,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -27647,8 +26384,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -27680,8 +26416,7 @@
       "Inference",
       {
         "current_goal_id": 1293,
-        "current_goal_text":
-          "arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n arity X72",
+        "current_goal_text": "arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n arity X72",
         "current_goal_predicate": "=",
         "failed_attempts": [],
         "successful_attempts": [
@@ -27805,13 +26540,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -27830,8 +26563,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -27856,13 +26588,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -27877,8 +26607,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -27913,8 +26642,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "if\n (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n   arity X72) \n (if-verbose (coq.say HB: skipping section opening) ,\n   X73 =\n    app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n (, (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n   (log.coq.env.begin-section X76) \n   (instance.private.postulate-arity\n     (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n     [] \n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X73 \n     X72))",
+              "goal_text": "if\n (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n   arity X72) \n (if-verbose (coq.say HB: skipping section opening) ,\n   X73 =\n    app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n (, (, (new_int X74) (std.any->string X74 X75) (X76 is hb_instance_ ^ X75)) \n   (log.coq.env.begin-section X76) \n   (instance.private.postulate-arity\n     (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n     [] \n     (app\n       [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X73 \n     X72))",
               "goal_id": 1290
             },
             "cut_branch": {
@@ -27942,8 +26670,7 @@
       "Inference",
       {
         "current_goal_id": 1295,
-        "current_goal_text":
-          "if-verbose (coq.say HB: skipping section opening) ,\n X73 =\n  app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]",
+        "current_goal_text": "if-verbose (coq.say HB: skipping section opening) ,\n X73 =\n  app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]",
         "current_goal_predicate": ",",
         "failed_attempts": [],
         "successful_attempts": [
@@ -27954,13 +26681,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if-verbose (coq.say HB: skipping section opening)",
+                "goal_text": "if-verbose (coq.say HB: skipping section opening)",
                 "goal_id": 1296
               },
               {
-                "goal_text":
-                  "X73 =\n app\n  [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n   global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]",
+                "goal_text": "X73 =\n app\n  [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n   global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]",
                 "goal_id": 1297
               }
             ],
@@ -28073,13 +26798,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -28098,8 +26821,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -28124,13 +26846,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -28145,8 +26865,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -28178,8 +26897,7 @@
       "Inference",
       {
         "current_goal_id": 1296,
-        "current_goal_text":
-          "if-verbose (coq.say HB: skipping section opening)",
+        "current_goal_text": "if-verbose (coq.say HB: skipping section opening)",
         "current_goal_predicate": "if-verbose",
         "failed_attempts": [],
         "successful_attempts": [
@@ -28188,13 +26906,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(if-verbose A0) :- (get-option verbose tt), (!), A0.",
+                  "rule_text": "(if-verbose A0) :- (get-option verbose tt), (!), A0.",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                       "line": 51,
                       "column": 0,
                       "character": 1529
@@ -28223,13 +26939,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(if-verbose A0) :- (get-option verbose tt), (!), A0.",
+                "rule_text": "(if-verbose A0) :- (get-option verbose tt), (!), A0.",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 51,
                     "column": 0,
                     "character": 1529
@@ -28344,13 +27058,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -28369,8 +27081,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -28395,13 +27106,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -28416,8 +27125,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -28459,13 +27167,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(if-verbose A0) :- (get-option verbose tt), (!), A0.",
+                "rule_text": "(if-verbose A0) :- (get-option verbose tt), (!), A0.",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 51,
                     "column": 0,
                     "character": 1529
@@ -28580,13 +27286,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -28605,8 +27309,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -28631,13 +27334,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -28652,8 +27353,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -28685,8 +27385,7 @@
       "Inference",
       {
         "current_goal_id": 1296,
-        "current_goal_text":
-          "if-verbose (coq.say HB: skipping section opening)",
+        "current_goal_text": "if-verbose (coq.say HB: skipping section opening)",
         "current_goal_predicate": "if-verbose",
         "failed_attempts": [],
         "successful_attempts": [
@@ -28699,8 +27398,7 @@
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                       "line": 52,
                       "column": 0,
                       "character": 1576
@@ -28724,8 +27422,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 52,
                     "column": 0,
                     "character": 1576
@@ -28840,13 +27537,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -28865,8 +27560,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -28891,13 +27585,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -28912,8 +27604,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -28945,8 +27636,7 @@
       "Inference",
       {
         "current_goal_id": 1297,
-        "current_goal_text":
-          "X73 =\n app\n  [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n   global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]",
+        "current_goal_text": "X73 =\n app\n  [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n   global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]",
         "current_goal_predicate": "=",
         "failed_attempts": [],
         "successful_attempts": [
@@ -29075,13 +27765,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -29100,8 +27788,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -29126,13 +27813,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -29147,8 +27832,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -29186,8 +27870,7 @@
       "Inference",
       {
         "current_goal_id": 1292,
-        "current_goal_text":
-          "std.do!\n [std.assert!\n   (coq.safe-dest-app\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n     (global X77) X78) The type of the instance is not a factory, \n  factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [std.assert!\n   (coq.safe-dest-app\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n     (global X77) X78) The type of the instance is not a factory, \n  factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -29196,8 +27879,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -29222,14 +27904,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.assert!\n (coq.safe-dest-app\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n   (global X77) X78) The type of the instance is not a factory",
+                "goal_text": "std.assert!\n (coq.safe-dest-app\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n   (global X77) X78) The type of the instance is not a factory",
                 "goal_id": 1301
               },
               { "goal_text": "!", "goal_id": 1302 },
               {
-                "goal_text":
-                  "std.do!\n [factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [factory-alias->gref X77 X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop X80 X78 [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
                 "goal_id": 1303
               }
             ],
@@ -29337,13 +28017,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -29362,8 +28040,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -29388,13 +28065,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -29409,8 +28084,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -29442,8 +28116,7 @@
       "Inference",
       {
         "current_goal_id": 1301,
-        "current_goal_text":
-          "std.assert!\n (coq.safe-dest-app\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n   (global X77) X78) The type of the instance is not a factory",
+        "current_goal_text": "std.assert!\n (coq.safe-dest-app\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n   (global X77) X78) The type of the instance is not a factory",
         "current_goal_predicate": "std.assert!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -29452,8 +28125,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                  "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -29477,8 +28149,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global X77) X78 ;\n std.fatal-error-w-data The type of the instance is not a factory \n  (coq.safe-dest-app\n    (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n    (global X77) X78)",
+                "goal_text": "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global X77) X78 ;\n std.fatal-error-w-data The type of the instance is not a factory \n  (coq.safe-dest-app\n    (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n    (global X77) X78)",
                 "goal_id": 1304
               },
               { "goal_text": "!", "goal_id": 1305 }
@@ -29492,8 +28163,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -29607,13 +28277,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -29632,8 +28300,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -29658,13 +28325,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -29679,8 +28344,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -29712,8 +28376,7 @@
       "Inference",
       {
         "current_goal_id": 1304,
-        "current_goal_text":
-          "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global X77) X78 ;\n std.fatal-error-w-data The type of the instance is not a factory \n  (coq.safe-dest-app\n    (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n    (global X77) X78)",
+        "current_goal_text": "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global X77) X78 ;\n std.fatal-error-w-data The type of the instance is not a factory \n  (coq.safe-dest-app\n    (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n    (global X77) X78)",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -29743,8 +28406,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global X77) X78",
+                "goal_text": "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global X77) X78",
                 "goal_id": 1306
               }
             ],
@@ -29776,8 +28438,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -29891,13 +28552,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -29916,8 +28575,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -29942,13 +28600,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -29963,8 +28619,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -29996,8 +28651,7 @@
       "Inference",
       {
         "current_goal_id": 1306,
-        "current_goal_text":
-          "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global X77) X78",
+        "current_goal_text": "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global X77) X78",
         "current_goal_predicate": "coq.safe-dest-app",
         "failed_attempts": [],
         "successful_attempts": [
@@ -30006,8 +28660,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (coq.safe-dest-app A0 A2 A4), (std.append A4 A1 A3).",
+                  "rule_text": "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (coq.safe-dest-app A0 A2 A4), (std.append A4 A1 A3).",
                   "rule_loc": [
                     "File",
                     {
@@ -30029,8 +28682,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1307 },
               {
-                "goal_text":
-                  "coq.safe-dest-app (global (indt «IsSelfA'.axioms_»)) (global X77) X100",
+                "goal_text": "coq.safe-dest-app (global (indt «IsSelfA'.axioms_»)) (global X77) X100",
                 "goal_id": 1308
               },
               {
@@ -30047,8 +28699,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (coq.safe-dest-app A0 A2 A4), (std.append A4 A1 A3).",
+                "rule_text": "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (coq.safe-dest-app A0 A2 A4), (std.append A4 A1 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -30086,8 +28737,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -30201,13 +28851,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -30226,8 +28874,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -30252,13 +28899,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -30273,8 +28918,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -30309,8 +28953,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global X77) X78",
+              "goal_text": "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global X77) X78",
               "goal_id": 1306
             },
             "cut_branch": {
@@ -30338,8 +28981,7 @@
       "Inference",
       {
         "current_goal_id": 1308,
-        "current_goal_text":
-          "coq.safe-dest-app (global (indt «IsSelfA'.axioms_»)) (global X77) X100",
+        "current_goal_text": "coq.safe-dest-app (global (indt «IsSelfA'.axioms_»)) (global X77) X100",
         "current_goal_predicate": "coq.safe-dest-app",
         "failed_attempts": [],
         "successful_attempts": [
@@ -30395,8 +29037,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (coq.safe-dest-app A0 A2 A4), (std.append A4 A1 A3).",
+                "rule_text": "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (coq.safe-dest-app A0 A2 A4), (std.append A4 A1 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -30434,8 +29075,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -30549,13 +29189,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -30574,8 +29212,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -30600,13 +29237,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -30621,8 +29256,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -30709,8 +29343,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (coq.safe-dest-app A0 A2 A4), (std.append A4 A1 A3).",
+                "rule_text": "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (coq.safe-dest-app A0 A2 A4), (std.append A4 A1 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -30748,8 +29381,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -30863,13 +29495,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -30888,8 +29518,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -30914,13 +29543,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -30935,8 +29562,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -30971,8 +29597,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global X77) X78 ;\n std.fatal-error-w-data The type of the instance is not a factory \n  (coq.safe-dest-app\n    (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n    (global X77) X78)",
+              "goal_text": "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global X77) X78 ;\n std.fatal-error-w-data The type of the instance is not a factory \n  (coq.safe-dest-app\n    (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n    (global X77) X78)",
               "goal_id": 1304
             },
             "cut_branch": {
@@ -31006,8 +29631,7 @@
       "Inference",
       {
         "current_goal_id": 1303,
-        "current_goal_text":
-          "std.do!\n [factory-alias->gref (indt «IsSelfA'.axioms_») X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop X80 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [factory-alias->gref (indt «IsSelfA'.axioms_») X79, \n  std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop X80 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -31016,8 +29640,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -31042,14 +29665,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "factory-alias->gref (indt «IsSelfA'.axioms_») X79",
+                "goal_text": "factory-alias->gref (indt «IsSelfA'.axioms_») X79",
                 "goal_id": 1310
               },
               { "goal_text": "!", "goal_id": 1311 },
               {
-                "goal_text":
-                  "std.do!\n [std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop X80 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [std.assert! (factory-nparams X79 X80) Not a factory synthesized by HB, \n  instance.private.hack-section-discharging\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop X80 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 X79, \n  instance.private.declare-instance X79 X88 X87 X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
                 "goal_id": 1312
               }
             ],
@@ -31176,13 +29797,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -31201,8 +29820,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -31227,13 +29845,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -31248,8 +29864,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -31281,8 +29896,7 @@
       "Inference",
       {
         "current_goal_id": 1310,
-        "current_goal_text":
-          "factory-alias->gref (indt «IsSelfA'.axioms_») X79",
+        "current_goal_text": "factory-alias->gref (indt «IsSelfA'.axioms_») X79",
         "current_goal_predicate": "factory-alias->gref",
         "failed_attempts": [],
         "successful_attempts": [
@@ -31291,13 +29905,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
+                  "rule_text": "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 74,
                       "column": 0,
                       "character": 2385
@@ -31326,13 +29938,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
+                "rule_text": "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 74,
                     "column": 0,
                     "character": 2385
@@ -31461,13 +30071,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -31486,8 +30094,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -31512,13 +30119,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -31533,8 +30138,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -31573,8 +30177,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31598,8 +30201,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «HasA.Axioms_») (const «HasA.phant_Build») \n  «interleave_context.HasA.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «HasA.Axioms_») (const «HasA.phant_Build») \n  «interleave_context.HasA.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31623,8 +30225,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31648,8 +30249,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «HasB.Axioms_») (const «HasB.phant_Build») \n  «interleave_context.HasB.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «HasB.Axioms_») (const «HasB.phant_Build») \n  «interleave_context.HasB.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31673,8 +30273,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31698,8 +30297,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «IsSelfA.Axioms_») (const «IsSelfA.phant_Build») \n  «interleave_context.IsSelfA.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «IsSelfA.Axioms_») (const «IsSelfA.phant_Build») \n  «interleave_context.IsSelfA.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31723,8 +30321,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31748,8 +30345,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «IsSelfA'.Axioms_») (const «IsSelfA'.phant_Build») \n  «interleave_context.IsSelfA'.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «IsSelfA'.Axioms_») (const «IsSelfA'.phant_Build») \n  «interleave_context.IsSelfA'.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31777,8 +30373,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -31797,13 +30392,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
+                "rule_text": "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 74,
                     "column": 0,
                     "character": 2385
@@ -31932,13 +30525,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -31957,8 +30548,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -31983,13 +30573,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -32004,8 +30592,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -32037,8 +30624,7 @@
       "Inference",
       {
         "current_goal_id": 1310,
-        "current_goal_text":
-          "factory-alias->gref (indt «IsSelfA'.axioms_») X79",
+        "current_goal_text": "factory-alias->gref (indt «IsSelfA'.axioms_») X79",
         "current_goal_predicate": "factory-alias->gref",
         "failed_attempts": [],
         "successful_attempts": [
@@ -32047,13 +30633,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
+                  "rule_text": "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 75,
                       "column": 0,
                       "character": 2443
@@ -32082,13 +30666,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
+                "rule_text": "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 75,
                     "column": 0,
                     "character": 2443
@@ -32217,13 +30799,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -32242,8 +30822,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -32268,13 +30847,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -32289,8 +30866,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -32329,8 +30905,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -32353,8 +30928,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -32377,8 +30951,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -32399,8 +30972,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                  "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                   "rule_loc": [
                     "File",
                     {
@@ -32429,8 +31001,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -32449,13 +31020,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
+                "rule_text": "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 75,
                     "column": 0,
                     "character": 2443
@@ -32584,13 +31153,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -32609,8 +31176,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -32635,13 +31201,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -32656,8 +31220,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -32692,13 +31255,11 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-alias->gref (indt «IsSelfA'.axioms_») X79",
+              "goal_text": "factory-alias->gref (indt «IsSelfA'.axioms_») X79",
               "goal_id": 1310
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt «A.axioms_») (indt «A.axioms_»)) :- .",
+              "rule_text": "(factory-alias->gref (indt «A.axioms_») (indt «A.axioms_»)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -32712,13 +31273,11 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-alias->gref (indt «IsSelfA'.axioms_») X79",
+              "goal_text": "factory-alias->gref (indt «IsSelfA'.axioms_») X79",
               "goal_id": 1310
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt «B.axioms_») (indt «B.axioms_»)) :- .",
+              "rule_text": "(factory-alias->gref (indt «B.axioms_») (indt «B.axioms_»)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -32732,13 +31291,11 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-alias->gref (indt «IsSelfA'.axioms_») X79",
+              "goal_text": "factory-alias->gref (indt «IsSelfA'.axioms_») X79",
               "goal_id": 1310
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt «SelfA.axioms_») (indt «SelfA.axioms_»)) :- .",
+              "rule_text": "(factory-alias->gref (indt «SelfA.axioms_») (indt «SelfA.axioms_»)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -32768,8 +31325,7 @@
       "Inference",
       {
         "current_goal_id": 1312,
-        "current_goal_text":
-          "std.do!\n [std.assert! (factory-nparams (indt «IsSelfA'.axioms_») X80) \n   Not a factory synthesized by HB, \n  instance.private.hack-section-discharging\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop X80 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [std.assert! (factory-nparams (indt «IsSelfA'.axioms_») X80) \n   Not a factory synthesized by HB, \n  instance.private.hack-section-discharging\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop X80 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -32778,8 +31334,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -32804,14 +31359,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.assert! (factory-nparams (indt «IsSelfA'.axioms_») X80) \n Not a factory synthesized by HB",
+                "goal_text": "std.assert! (factory-nparams (indt «IsSelfA'.axioms_») X80) \n Not a factory synthesized by HB",
                 "goal_id": 1317
               },
               { "goal_text": "!", "goal_id": 1318 },
               {
-                "goal_text":
-                  "std.do!\n [instance.private.hack-section-discharging\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop X80 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [instance.private.hack-section-discharging\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop X80 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
                 "goal_id": 1319
               }
             ],
@@ -32957,13 +31510,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -32982,8 +31533,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -33008,13 +31558,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -33029,8 +31577,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -33062,8 +31609,7 @@
       "Inference",
       {
         "current_goal_id": 1317,
-        "current_goal_text":
-          "std.assert! (factory-nparams (indt «IsSelfA'.axioms_») X80) \n Not a factory synthesized by HB",
+        "current_goal_text": "std.assert! (factory-nparams (indt «IsSelfA'.axioms_») X80) \n Not a factory synthesized by HB",
         "current_goal_predicate": "std.assert!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -33072,8 +31618,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                  "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -33095,8 +31640,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "factory-nparams (indt «IsSelfA'.axioms_») X80 ;\n std.fatal-error-w-data Not a factory synthesized by HB \n  (factory-nparams (indt «IsSelfA'.axioms_») X80)",
+                "goal_text": "factory-nparams (indt «IsSelfA'.axioms_») X80 ;\n std.fatal-error-w-data Not a factory synthesized by HB \n  (factory-nparams (indt «IsSelfA'.axioms_») X80)",
                 "goal_id": 1320
               },
               { "goal_text": "!", "goal_id": 1321 }
@@ -33110,8 +31654,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -33263,13 +31806,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -33288,8 +31829,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -33314,13 +31854,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -33335,8 +31873,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -33368,8 +31905,7 @@
       "Inference",
       {
         "current_goal_id": 1320,
-        "current_goal_text":
-          "factory-nparams (indt «IsSelfA'.axioms_») X80 ;\n std.fatal-error-w-data Not a factory synthesized by HB \n  (factory-nparams (indt «IsSelfA'.axioms_») X80)",
+        "current_goal_text": "factory-nparams (indt «IsSelfA'.axioms_») X80 ;\n std.fatal-error-w-data Not a factory synthesized by HB \n  (factory-nparams (indt «IsSelfA'.axioms_») X80)",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -33399,8 +31935,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "factory-nparams (indt «IsSelfA'.axioms_») X80",
+                "goal_text": "factory-nparams (indt «IsSelfA'.axioms_») X80",
                 "goal_id": 1322
               }
             ],
@@ -33432,8 +31967,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -33585,13 +32119,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -33610,8 +32142,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -33636,13 +32167,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -33657,8 +32186,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -33690,8 +32218,7 @@
       "Inference",
       {
         "current_goal_id": 1322,
-        "current_goal_text":
-          "factory-nparams (indt «IsSelfA'.axioms_») X80",
+        "current_goal_text": "factory-nparams (indt «IsSelfA'.axioms_») X80",
         "current_goal_predicate": "factory-nparams",
         "failed_attempts": [
           {
@@ -33721,8 +32248,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-nparams (indt «HasB.axioms_») 1) :- .",
+                "rule_text": "(factory-nparams (indt «HasB.axioms_») 1) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -33768,8 +32294,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-nparams (indt «IsSelfA.axioms_») 0) :- .",
+                "rule_text": "(factory-nparams (indt «IsSelfA.axioms_») 0) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -33792,8 +32317,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-nparams (indt «SelfA.axioms_») 0) :- .",
+                "rule_text": "(factory-nparams (indt «SelfA.axioms_») 0) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -33816,8 +32340,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-nparams (indt «IsSelfA'.axioms_») 0) :- .",
+                "rule_text": "(factory-nparams (indt «IsSelfA'.axioms_») 0) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -33838,8 +32361,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(factory-nparams (indt «HasA.axioms_») 1) :- .",
+                  "rule_text": "(factory-nparams (indt «HasA.axioms_») 1) :- .",
                   "rule_loc": [
                     "File",
                     {
@@ -33868,8 +32390,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-nparams (indt «HasA.axioms_») 1) :- .",
+                "rule_text": "(factory-nparams (indt «HasA.axioms_») 1) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -33907,8 +32428,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -34060,13 +32580,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -34085,8 +32603,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -34111,13 +32628,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -34132,8 +32647,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -34168,8 +32682,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-nparams (indt «IsSelfA'.axioms_») X80 ;\n std.fatal-error-w-data Not a factory synthesized by HB \n  (factory-nparams (indt «IsSelfA'.axioms_») X80)",
+              "goal_text": "factory-nparams (indt «IsSelfA'.axioms_») X80 ;\n std.fatal-error-w-data Not a factory synthesized by HB \n  (factory-nparams (indt «IsSelfA'.axioms_») X80)",
               "goal_id": 1320
             },
             "cut_branch": {
@@ -34203,8 +32716,7 @@
       "Inference",
       {
         "current_goal_id": 1319,
-        "current_goal_text":
-          "std.do!\n [instance.private.hack-section-discharging\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [instance.private.hack-section-discharging\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81, \n  instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -34213,8 +32725,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -34239,14 +32750,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "instance.private.hack-section-discharging\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81",
+                "goal_text": "instance.private.hack-section-discharging\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81",
                 "goal_id": 1323
               },
               { "goal_text": "!", "goal_id": 1324 },
               {
-                "goal_text":
-                  "std.do!\n [instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [instance.private.optimize-body X81 X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
                 "goal_id": 1325
               }
             ],
@@ -34411,13 +32920,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -34436,8 +32943,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -34462,13 +32968,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -34483,8 +32987,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -34516,8 +33019,7 @@
       "Inference",
       {
         "current_goal_id": 1323,
-        "current_goal_text":
-          "instance.private.hack-section-discharging\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81",
+        "current_goal_text": "instance.private.hack-section-discharging\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81",
         "current_goal_predicate": "instance.private.hack-section-discharging",
         "failed_attempts": [],
         "successful_attempts": [
@@ -34526,13 +33028,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(instance.private.hack-section-discharging A0 A0) :- (current-mode no-builder), \n (!).",
+                  "rule_text": "(instance.private.hack-section-discharging A0 A0) :- (current-mode no-builder), \n (!).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                       "line": 300,
                       "column": 0,
                       "character": 12925
@@ -34564,13 +33064,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.hack-section-discharging A0 A0) :- (current-mode no-builder), \n (!).",
+                "rule_text": "(instance.private.hack-section-discharging A0 A0) :- (current-mode no-builder), \n (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 300,
                     "column": 0,
                     "character": 12925
@@ -34737,13 +33235,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -34762,8 +33258,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -34788,13 +33283,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -34809,8 +33302,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -34852,13 +33344,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.hack-section-discharging A0 A0) :- (current-mode no-builder), \n (!).",
+                "rule_text": "(instance.private.hack-section-discharging A0 A0) :- (current-mode no-builder), \n (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 300,
                     "column": 0,
                     "character": 12925
@@ -35025,13 +33515,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -35050,8 +33538,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -35076,13 +33563,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -35097,8 +33582,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -35130,8 +33614,7 @@
       "Inference",
       {
         "current_goal_id": 1323,
-        "current_goal_text":
-          "instance.private.hack-section-discharging\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81",
+        "current_goal_text": "instance.private.hack-section-discharging\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81",
         "current_goal_predicate": "instance.private.hack-section-discharging",
         "failed_attempts": [],
         "successful_attempts": [
@@ -35140,13 +33623,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(instance.private.hack-section-discharging A0 A1) :- (current-mode\n                                                       (builder-from _ A2 _ _)), \n (!), (std.assert-ok! (coq.typecheck A2 A3) TheFactory is illtyped (BUG)), \n (A1 = let `_` A3 A2 (c0 \\ A0)).",
+                  "rule_text": "(instance.private.hack-section-discharging A0 A1) :- (current-mode\n                                                       (builder-from _ A2 _ _)), \n (!), (std.assert-ok! (coq.typecheck A2 A3) TheFactory is illtyped (BUG)), \n (A1 = let `_` A3 A2 (c0 \\ A0)).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                       "line": 301,
                       "column": 0,
                       "character": 12985
@@ -35169,13 +33650,11 @@
               },
               { "goal_text": "!", "goal_id": 1329 },
               {
-                "goal_text":
-                  "std.assert-ok! (coq.typecheck X101 X102) TheFactory is illtyped (BUG)",
+                "goal_text": "std.assert-ok! (coq.typecheck X101 X102) TheFactory is illtyped (BUG)",
                 "goal_id": 1330
               },
               {
-                "goal_text":
-                  "X81 =\n let `_` X102 X101 c0 \\\n  app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c1 \\ c1]",
+                "goal_text": "X81 =\n let `_` X102 X101 c0 \\\n  app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c1 \\ c1]",
                 "goal_id": 1331
               }
             ],
@@ -35188,13 +33667,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.hack-section-discharging A0 A1) :- (current-mode\n                                                       (builder-from _ A2 _ _)), \n (!), (std.assert-ok! (coq.typecheck A2 A3) TheFactory is illtyped (BUG)), \n (A1 = let `_` A3 A2 (c0 \\ A0)).",
+                "rule_text": "(instance.private.hack-section-discharging A0 A1) :- (current-mode\n                                                       (builder-from _ A2 _ _)), \n (!), (std.assert-ok! (coq.typecheck A2 A3) TheFactory is illtyped (BUG)), \n (A1 = let `_` A3 A2 (c0 \\ A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 301,
                     "column": 0,
                     "character": 12985
@@ -35361,13 +33838,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -35386,8 +33861,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -35412,13 +33886,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -35433,8 +33905,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -35476,13 +33947,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.hack-section-discharging A0 A1) :- (current-mode\n                                                       (builder-from _ A2 _ _)), \n (!), (std.assert-ok! (coq.typecheck A2 A3) TheFactory is illtyped (BUG)), \n (A1 = let `_` A3 A2 (c0 \\ A0)).",
+                "rule_text": "(instance.private.hack-section-discharging A0 A1) :- (current-mode\n                                                       (builder-from _ A2 _ _)), \n (!), (std.assert-ok! (coq.typecheck A2 A3) TheFactory is illtyped (BUG)), \n (A1 = let `_` A3 A2 (c0 \\ A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 301,
                     "column": 0,
                     "character": 12985
@@ -35649,13 +34118,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -35674,8 +34141,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -35700,13 +34166,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -35721,8 +34185,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -35754,8 +34217,7 @@
       "Inference",
       {
         "current_goal_id": 1323,
-        "current_goal_text":
-          "instance.private.hack-section-discharging\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81",
+        "current_goal_text": "instance.private.hack-section-discharging\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X81",
         "current_goal_predicate": "instance.private.hack-section-discharging",
         "failed_attempts": [],
         "successful_attempts": [
@@ -35764,13 +34226,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(instance.private.hack-section-discharging A0 A0) :- .",
+                  "rule_text": "(instance.private.hack-section-discharging A0 A0) :- .",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                       "line": 304,
                       "column": 0,
                       "character": 13219
@@ -35799,13 +34259,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.hack-section-discharging A0 A0) :- .",
+                "rule_text": "(instance.private.hack-section-discharging A0 A0) :- .",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 304,
                     "column": 0,
                     "character": 13219
@@ -35972,13 +34430,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -35997,8 +34453,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -36023,13 +34478,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -36044,8 +34497,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -36083,8 +34535,7 @@
       "Inference",
       {
         "current_goal_id": 1325,
-        "current_goal_text":
-          "std.do!\n [instance.private.optimize-body\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [instance.private.optimize-body\n   (app\n     [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X82, \n  if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -36093,8 +34544,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -36119,14 +34569,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "instance.private.optimize-body\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X82",
+                "goal_text": "instance.private.optimize-body\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X82",
                 "goal_id": 1332
               },
               { "goal_text": "!", "goal_id": 1333 },
               {
-                "goal_text":
-                  "std.do!\n [if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 X82 \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
                 "goal_id": 1334
               }
             ],
@@ -36310,13 +34758,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -36335,8 +34781,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -36361,13 +34806,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -36382,8 +34825,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -36415,8 +34857,7 @@
       "Inference",
       {
         "current_goal_id": 1332,
-        "current_goal_text":
-          "instance.private.optimize-body\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X82",
+        "current_goal_text": "instance.private.optimize-body\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X82",
         "current_goal_predicate": "instance.private.optimize-body",
         "failed_attempts": [],
         "successful_attempts": [
@@ -36425,13 +34866,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                  "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                       "line": 309,
                       "column": 0,
                       "character": 13433
@@ -36450,19 +34889,16 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "phant-abbrev _ (const «IsSelfA'.phant_Build») _ ;\n coq.gref->id (const «IsSelfA'.phant_Build») X103 , rex_match phant_ X103",
+                "goal_text": "phant-abbrev _ (const «IsSelfA'.phant_Build») _ ;\n coq.gref->id (const «IsSelfA'.phant_Build») X103 , rex_match phant_ X103",
                 "goal_id": 1335
               },
               { "goal_text": "!", "goal_id": 1336 },
               {
-                "goal_text":
-                  "coq.env.const «IsSelfA'.phant_Build» (some X104) _",
+                "goal_text": "coq.env.const «IsSelfA'.phant_Build» (some X104) _",
                 "goal_id": 1337
               },
               {
-                "goal_text":
-                  "hd-beta X104 \n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] X105 X106",
+                "goal_text": "hd-beta X104 \n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] X105 X106",
                 "goal_id": 1338
               },
               { "goal_text": "unwind X105 X106 X82", "goal_id": 1339 }
@@ -36476,13 +34912,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -36668,13 +35102,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -36693,8 +35125,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -36719,13 +35150,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -36740,8 +35169,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -36773,8 +35201,7 @@
       "Inference",
       {
         "current_goal_id": 1335,
-        "current_goal_text":
-          "phant-abbrev _ (const «IsSelfA'.phant_Build») _ ;\n coq.gref->id (const «IsSelfA'.phant_Build») X103 , rex_match phant_ X103",
+        "current_goal_text": "phant-abbrev _ (const «IsSelfA'.phant_Build») _ ;\n coq.gref->id (const «IsSelfA'.phant_Build») X103 , rex_match phant_ X103",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -36804,8 +35231,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "phant-abbrev _ (const «IsSelfA'.phant_Build») _",
+                "goal_text": "phant-abbrev _ (const «IsSelfA'.phant_Build») _",
                 "goal_id": 1340
               }
             ],
@@ -36837,13 +35263,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -37029,13 +35453,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -37054,8 +35476,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -37080,13 +35501,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -37101,8 +35520,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -37134,16 +35552,14 @@
       "Inference",
       {
         "current_goal_id": 1340,
-        "current_goal_text":
-          "phant-abbrev _ (const «IsSelfA'.phant_Build») _",
+        "current_goal_text": "phant-abbrev _ (const «IsSelfA'.phant_Build») _",
         "current_goal_predicate": "phant-abbrev",
         "failed_attempts": [
           {
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «HasA.Axioms_») (const «HasA.phant_Build») \n  «interleave_context.HasA.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «HasA.Axioms_») (const «HasA.phant_Build») \n  «interleave_context.HasA.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -37166,8 +35582,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -37190,8 +35605,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «HasB.Axioms_») (const «HasB.phant_Build») \n  «interleave_context.HasB.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «HasB.Axioms_») (const «HasB.phant_Build») \n  «interleave_context.HasB.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -37214,8 +35628,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -37238,8 +35651,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «IsSelfA.Axioms_») (const «IsSelfA.phant_Build») \n  «interleave_context.IsSelfA.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «IsSelfA.Axioms_») (const «IsSelfA.phant_Build») \n  «interleave_context.IsSelfA.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -37262,8 +35674,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -37286,8 +35697,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «IsSelfA'.Axioms_») (const «IsSelfA'.phant_Build») \n  «interleave_context.IsSelfA'.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «IsSelfA'.Axioms_») (const «IsSelfA'.phant_Build») \n  «interleave_context.IsSelfA'.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -37308,8 +35718,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                  "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                   "rule_loc": [
                     "File",
                     {
@@ -37338,8 +35747,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -37377,13 +35785,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -37569,13 +35975,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -37594,8 +35998,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -37620,13 +36023,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -37641,8 +36042,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -37677,8 +36077,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "phant-abbrev _ (const «IsSelfA'.phant_Build») _ ;\n coq.gref->id (const «IsSelfA'.phant_Build») X103 , rex_match phant_ X103",
+              "goal_text": "phant-abbrev _ (const «IsSelfA'.phant_Build») _ ;\n coq.gref->id (const «IsSelfA'.phant_Build») X103 , rex_match phant_ X103",
               "goal_id": 1335
             },
             "cut_branch": {
@@ -37696,8 +36095,7 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "instance.private.optimize-body\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X82",
+              "goal_text": "instance.private.optimize-body\n (app\n   [global (const «IsSelfA'.phant_Build»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X82",
               "goal_id": 1332
             },
             "cut_branch": {
@@ -37705,8 +36103,7 @@
               "rule_loc": [
                 "File",
                 {
-                  "filename":
-                    "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                  "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                   "line": 314,
                   "column": 0,
                   "character": 13706
@@ -37726,8 +36123,7 @@
       "Inference",
       {
         "current_goal_id": 1337,
-        "current_goal_text":
-          "coq.env.const «IsSelfA'.phant_Build» (some X104) _",
+        "current_goal_text": "coq.env.const «IsSelfA'.phant_Build» (some X104) _",
         "current_goal_predicate": "coq.env.const",
         "failed_attempts": [],
         "successful_attempts": [
@@ -37738,8 +36134,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "some X104 =\n some\n  (fun `TheType` (sort (typ «interleave_context.386»)) c0 \\\n    fun `a` c0 c1 \\\n     fun `b` (prod `_` c0 c2 \\ c0) c2 \\\n      app [global (indc «IsSelfA'.Axioms_»), c0, c1, c2])",
+                "goal_text": "some X104 =\n some\n  (fun `TheType` (sort (typ «interleave_context.386»)) c0 \\\n    fun `a` c0 c1 \\\n     fun `b` (prod `_` c0 c2 \\ c0) c2 \\\n      app [global (indc «IsSelfA'.Axioms_»), c0, c1, c2])",
                 "goal_id": 1341
               }
             ],
@@ -37757,13 +36152,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -37949,13 +36342,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -37974,8 +36365,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -38000,13 +36390,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -38021,8 +36409,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -38054,8 +36441,7 @@
       "Inference",
       {
         "current_goal_id": 1341,
-        "current_goal_text":
-          "some X104 =\n some\n  (fun `TheType` (sort (typ «interleave_context.386»)) c0 \\\n    fun `a` c0 c1 \\\n     fun `b` (prod `_` c0 c2 \\ c0) c2 \\\n      app [global (indc «IsSelfA'.Axioms_»), c0, c1, c2])",
+        "current_goal_text": "some X104 =\n some\n  (fun `TheType` (sort (typ «interleave_context.386»)) c0 \\\n    fun `a` c0 c1 \\\n     fun `b` (prod `_` c0 c2 \\ c0) c2 \\\n      app [global (indc «IsSelfA'.Axioms_»), c0, c1, c2])",
         "current_goal_predicate": "=",
         "failed_attempts": [],
         "successful_attempts": [
@@ -38089,13 +36475,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -38281,13 +36665,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -38306,8 +36688,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -38332,13 +36713,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -38353,8 +36732,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -38386,8 +36764,7 @@
       "Inference",
       {
         "current_goal_id": 1338,
-        "current_goal_text":
-          "hd-beta\n (fun `TheType` (sort (typ «interleave_context.386»)) c0 \\\n   fun `a` c0 c1 \\\n    fun `b` (prod `_` c0 c2 \\ c0) c2 \\\n     app [global (indc «IsSelfA'.Axioms_»), c0, c1, c2]) \n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] X105 X106",
+        "current_goal_text": "hd-beta\n (fun `TheType` (sort (typ «interleave_context.386»)) c0 \\\n   fun `a` c0 c1 \\\n    fun `b` (prod `_` c0 c2 \\ c0) c2 \\\n     app [global (indc «IsSelfA'.Axioms_»), c0, c1, c2]) \n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] X105 X106",
         "current_goal_predicate": "hd-beta",
         "failed_attempts": [],
         "successful_attempts": [
@@ -38396,8 +36773,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                  "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -38426,8 +36802,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1342 },
               {
-                "goal_text":
-                  "hd-beta\n (fun `a` (global (indt «nat»)) c0 \\\n   fun `b` (prod `_` (global (indt «nat»)) c1 \\ global (indt «nat»)) c1 \\\n    app [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), c0, c1]) \n [global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0] X105 X106",
+                "goal_text": "hd-beta\n (fun `a` (global (indt «nat»)) c0 \\\n   fun `b` (prod `_` (global (indt «nat»)) c1 \\ global (indt «nat»)) c1 \\\n    app [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), c0, c1]) \n [global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0] X105 X106",
                 "goal_id": 1343
               }
             ],
@@ -38440,8 +36815,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -38460,13 +36834,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -38652,13 +37024,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -38677,8 +37047,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -38703,13 +37072,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -38724,8 +37091,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -38760,8 +37126,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "hd-beta X104 \n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] X105 X106",
+              "goal_text": "hd-beta X104 \n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] X105 X106",
               "goal_id": 1338
             },
             "cut_branch": {
@@ -38789,8 +37154,7 @@
       "Inference",
       {
         "current_goal_id": 1343,
-        "current_goal_text":
-          "hd-beta\n (fun `a` (global (indt «nat»)) c0 \\\n   fun `b` (prod `_` (global (indt «nat»)) c1 \\ global (indt «nat»)) c1 \\\n    app [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), c0, c1]) \n [global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0] X105 X106",
+        "current_goal_text": "hd-beta\n (fun `a` (global (indt «nat»)) c0 \\\n   fun `b` (prod `_` (global (indt «nat»)) c1 \\ global (indt «nat»)) c1 \\\n    app [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), c0, c1]) \n [global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0] X105 X106",
         "current_goal_predicate": "hd-beta",
         "failed_attempts": [],
         "successful_attempts": [
@@ -38799,8 +37163,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                  "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -38829,8 +37192,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1344 },
               {
-                "goal_text":
-                  "hd-beta\n (fun `b` (prod `_` (global (indt «nat»)) c0 \\ global (indt «nat»)) c0 \\\n   app\n    [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n     global (indc «O»), c0]) [fun `x` (global (indt «nat»)) c0 \\ c0] \n X105 X106",
+                "goal_text": "hd-beta\n (fun `b` (prod `_` (global (indt «nat»)) c0 \\ global (indt «nat»)) c0 \\\n   app\n    [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n     global (indc «O»), c0]) [fun `x` (global (indt «nat»)) c0 \\ c0] \n X105 X106",
                 "goal_id": 1345
               }
             ],
@@ -38843,8 +37205,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -38863,8 +37224,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -38883,13 +37243,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -39075,13 +37433,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -39100,8 +37456,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -39126,13 +37481,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -39147,8 +37500,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -39183,8 +37535,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "hd-beta\n (fun `a` (global (indt «nat»)) c0 \\\n   fun `b` (prod `_` (global (indt «nat»)) c1 \\ global (indt «nat»)) c1 \\\n    app [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), c0, c1]) \n [global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0] X105 X106",
+              "goal_text": "hd-beta\n (fun `a` (global (indt «nat»)) c0 \\\n   fun `b` (prod `_` (global (indt «nat»)) c1 \\ global (indt «nat»)) c1 \\\n    app [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), c0, c1]) \n [global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0] X105 X106",
               "goal_id": 1343
             },
             "cut_branch": {
@@ -39212,8 +37563,7 @@
       "Inference",
       {
         "current_goal_id": 1345,
-        "current_goal_text":
-          "hd-beta\n (fun `b` (prod `_` (global (indt «nat»)) c0 \\ global (indt «nat»)) c0 \\\n   app\n    [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n     global (indc «O»), c0]) [fun `x` (global (indt «nat»)) c0 \\ c0] \n X105 X106",
+        "current_goal_text": "hd-beta\n (fun `b` (prod `_` (global (indt «nat»)) c0 \\ global (indt «nat»)) c0 \\\n   app\n    [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n     global (indc «O»), c0]) [fun `x` (global (indt «nat»)) c0 \\ c0] \n X105 X106",
         "current_goal_predicate": "hd-beta",
         "failed_attempts": [],
         "successful_attempts": [
@@ -39222,8 +37572,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                  "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -39251,8 +37600,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1346 },
               {
-                "goal_text":
-                  "hd-beta\n (app\n   [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) [] X105 \n X106",
+                "goal_text": "hd-beta\n (app\n   [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) [] X105 \n X106",
                 "goal_id": 1347
               }
             ],
@@ -39265,8 +37613,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -39285,8 +37632,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -39305,8 +37651,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -39325,13 +37670,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -39517,13 +37860,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -39542,8 +37883,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -39568,13 +37908,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -39589,8 +37927,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -39625,8 +37962,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "hd-beta\n (fun `b` (prod `_` (global (indt «nat»)) c0 \\ global (indt «nat»)) c0 \\\n   app\n    [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n     global (indc «O»), c0]) [fun `x` (global (indt «nat»)) c0 \\ c0] \n X105 X106",
+              "goal_text": "hd-beta\n (fun `b` (prod `_` (global (indt «nat»)) c0 \\ global (indt «nat»)) c0 \\\n   app\n    [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n     global (indc «O»), c0]) [fun `x` (global (indt «nat»)) c0 \\ c0] \n X105 X106",
               "goal_id": 1345
             },
             "cut_branch": {
@@ -39654,8 +37990,7 @@
       "Inference",
       {
         "current_goal_id": 1347,
-        "current_goal_text":
-          "hd-beta\n (app\n   [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) [] X105 \n X106",
+        "current_goal_text": "hd-beta\n (app\n   [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) [] X105 \n X106",
         "current_goal_predicate": "hd-beta",
         "failed_attempts": [],
         "successful_attempts": [
@@ -39664,8 +37999,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(hd-beta (app [A0 | A1]) A2 A3 A4) :- (!), (std.append A1 A2 A5), \n (hd-beta A0 A5 A3 A4).",
+                  "rule_text": "(hd-beta (app [A0 | A1]) A2 A3 A4) :- (!), (std.append A1 A2 A5), \n (hd-beta A0 A5 A3 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -39691,13 +38025,11 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1348 },
               {
-                "goal_text":
-                  "std.append\n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] [] X107",
+                "goal_text": "std.append\n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] [] X107",
                 "goal_id": 1349
               },
               {
-                "goal_text":
-                  "hd-beta (global (indc «IsSelfA'.Axioms_»)) X107 X105 X106",
+                "goal_text": "hd-beta (global (indc «IsSelfA'.Axioms_»)) X107 X105 X106",
                 "goal_id": 1350
               }
             ],
@@ -39710,8 +38042,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (app [A0 | A1]) A2 A3 A4) :- (!), (std.append A1 A2 A5), \n (hd-beta A0 A5 A3 A4).",
+                "rule_text": "(hd-beta (app [A0 | A1]) A2 A3 A4) :- (!), (std.append A1 A2 A5), \n (hd-beta A0 A5 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -39730,8 +38061,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -39750,8 +38080,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -39770,8 +38099,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -39790,13 +38118,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -39982,13 +38308,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -40007,8 +38331,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -40033,13 +38356,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -40054,8 +38375,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -40090,8 +38410,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "hd-beta\n (app\n   [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) [] X105 \n X106",
+              "goal_text": "hd-beta\n (app\n   [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) [] X105 \n X106",
               "goal_id": 1347
             },
             "cut_branch": {
@@ -40119,8 +38438,7 @@
       "Inference",
       {
         "current_goal_id": 1349,
-        "current_goal_text":
-          "std.append\n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] [] X107",
+        "current_goal_text": "std.append\n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] [] X107",
         "current_goal_predicate": "std.append",
         "failed_attempts": [],
         "successful_attempts": [
@@ -40129,8 +38447,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
+                  "rule_text": "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
                   "rule_loc": [
                     "File",
                     {
@@ -40154,8 +38471,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.append [global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0] [] \n X108",
+                "goal_text": "std.append [global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0] [] \n X108",
                 "goal_id": 1351
               }
             ],
@@ -40168,8 +38484,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
+                "rule_text": "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -40188,8 +38503,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (app [A0 | A1]) A2 A3 A4) :- (!), (std.append A1 A2 A5), \n (hd-beta A0 A5 A3 A4).",
+                "rule_text": "(hd-beta (app [A0 | A1]) A2 A3 A4) :- (!), (std.append A1 A2 A5), \n (hd-beta A0 A5 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -40208,8 +38522,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -40228,8 +38541,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -40248,8 +38560,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -40268,13 +38579,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -40460,13 +38769,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -40485,8 +38792,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -40511,13 +38817,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -40532,8 +38836,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -40565,8 +38868,7 @@
       "Inference",
       {
         "current_goal_id": 1351,
-        "current_goal_text":
-          "std.append [global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0] [] \n X108",
+        "current_goal_text": "std.append [global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0] [] \n X108",
         "current_goal_predicate": "std.append",
         "failed_attempts": [],
         "successful_attempts": [
@@ -40575,8 +38877,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
+                  "rule_text": "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
                   "rule_loc": [
                     "File",
                     {
@@ -40600,8 +38901,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.append [fun `x` (global (indt «nat»)) c0 \\ c0] [] X109",
+                "goal_text": "std.append [fun `x` (global (indt «nat»)) c0 \\ c0] [] X109",
                 "goal_id": 1352
               }
             ],
@@ -40614,8 +38914,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
+                "rule_text": "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -40634,8 +38933,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
+                "rule_text": "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -40654,8 +38952,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (app [A0 | A1]) A2 A3 A4) :- (!), (std.append A1 A2 A5), \n (hd-beta A0 A5 A3 A4).",
+                "rule_text": "(hd-beta (app [A0 | A1]) A2 A3 A4) :- (!), (std.append A1 A2 A5), \n (hd-beta A0 A5 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -40674,8 +38971,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -40694,8 +38990,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -40714,8 +39009,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -40734,13 +39028,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -40926,13 +39218,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -40951,8 +39241,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -40977,13 +39266,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -40998,8 +39285,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -41031,8 +39317,7 @@
       "Inference",
       {
         "current_goal_id": 1352,
-        "current_goal_text":
-          "std.append [fun `x` (global (indt «nat»)) c0 \\ c0] [] X109",
+        "current_goal_text": "std.append [fun `x` (global (indt «nat»)) c0 \\ c0] [] X109",
         "current_goal_predicate": "std.append",
         "failed_attempts": [],
         "successful_attempts": [
@@ -41041,8 +39326,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
+                  "rule_text": "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
                   "rule_loc": [
                     "File",
                     {
@@ -41078,8 +39362,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
+                "rule_text": "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -41098,8 +39381,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
+                "rule_text": "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -41118,8 +39400,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
+                "rule_text": "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -41138,8 +39419,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (app [A0 | A1]) A2 A3 A4) :- (!), (std.append A1 A2 A5), \n (hd-beta A0 A5 A3 A4).",
+                "rule_text": "(hd-beta (app [A0 | A1]) A2 A3 A4) :- (!), (std.append A1 A2 A5), \n (hd-beta A0 A5 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -41158,8 +39438,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -41178,8 +39457,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -41198,8 +39476,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -41218,13 +39495,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -41410,13 +39685,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -41435,8 +39708,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -41461,13 +39733,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -41482,8 +39752,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -41537,8 +39806,7 @@
                 }
               ],
               "events": [
-                [ "Assign", "A0 := []" ],
-                [ "Assign", "X110 := []" ]
+                [ "Assign", "A0 := []" ], [ "Assign", "X110 := []" ]
               ]
             },
             "siblings": [],
@@ -41570,8 +39838,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
+                "rule_text": "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -41590,8 +39857,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
+                "rule_text": "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -41610,8 +39876,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
+                "rule_text": "(std.append [A0 | A1] A2 [A0 | A3]) :- (std.append A1 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -41630,8 +39895,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (app [A0 | A1]) A2 A3 A4) :- (!), (std.append A1 A2 A5), \n (hd-beta A0 A5 A3 A4).",
+                "rule_text": "(hd-beta (app [A0 | A1]) A2 A3 A4) :- (!), (std.append A1 A2 A5), \n (hd-beta A0 A5 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -41650,8 +39914,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -41670,8 +39933,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -41690,8 +39952,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -41710,13 +39971,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -41902,13 +40161,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -41927,8 +40184,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -41953,13 +40209,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -41974,8 +40228,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -42007,8 +40260,7 @@
       "Inference",
       {
         "current_goal_id": 1350,
-        "current_goal_text":
-          "hd-beta (global (indc «IsSelfA'.Axioms_»)) \n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] X105 X106",
+        "current_goal_text": "hd-beta (global (indc «IsSelfA'.Axioms_»)) \n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] X105 X106",
         "current_goal_predicate": "hd-beta",
         "failed_attempts": [],
         "successful_attempts": [
@@ -42071,8 +40323,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (app [A0 | A1]) A2 A3 A4) :- (!), (std.append A1 A2 A5), \n (hd-beta A0 A5 A3 A4).",
+                "rule_text": "(hd-beta (app [A0 | A1]) A2 A3 A4) :- (!), (std.append A1 A2 A5), \n (hd-beta A0 A5 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -42091,8 +40342,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -42111,8 +40361,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -42131,8 +40380,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
+                "rule_text": "(hd-beta (fun _ _ A0) [A1 | A2] A3 A4) :- (!), (hd-beta (A0 A1) A2 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -42151,13 +40399,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -42343,13 +40589,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -42368,8 +40612,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -42394,13 +40637,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -42415,8 +40656,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -42448,8 +40688,7 @@
       "Inference",
       {
         "current_goal_id": 1339,
-        "current_goal_text":
-          "unwind (global (indc «IsSelfA'.Axioms_»)) \n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] X82",
+        "current_goal_text": "unwind (global (indc «IsSelfA'.Axioms_»)) \n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] X82",
         "current_goal_predicate": "unwind",
         "failed_attempts": [],
         "successful_attempts": [
@@ -42458,8 +40697,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-app-uvar A0 A1 A2) \n                       (coq.mk-app A0 A1 A2)).",
+                  "rule_text": "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-app-uvar A0 A1 A2) \n                       (coq.mk-app A0 A1 A2)).",
                   "rule_loc": [
                     "File",
                     {
@@ -42482,8 +40720,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if (var (global (indc «IsSelfA'.Axioms_»))) \n (coq.mk-app-uvar (global (indc «IsSelfA'.Axioms_»)) \n   [global (indt «nat»), global (indc «O»), \n    fun `x` (global (indt «nat»)) c0 \\ c0] X82) \n (coq.mk-app (global (indc «IsSelfA'.Axioms_»)) \n   [global (indt «nat»), global (indc «O»), \n    fun `x` (global (indt «nat»)) c0 \\ c0] X82)",
+                "goal_text": "if (var (global (indc «IsSelfA'.Axioms_»))) \n (coq.mk-app-uvar (global (indc «IsSelfA'.Axioms_»)) \n   [global (indt «nat»), global (indc «O»), \n    fun `x` (global (indt «nat»)) c0 \\ c0] X82) \n (coq.mk-app (global (indc «IsSelfA'.Axioms_»)) \n   [global (indt «nat»), global (indc «O»), \n    fun `x` (global (indt «nat»)) c0 \\ c0] X82)",
                 "goal_id": 1354
               }
             ],
@@ -42496,8 +40733,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-app-uvar A0 A1 A2) \n                       (coq.mk-app A0 A1 A2)).",
+                "rule_text": "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-app-uvar A0 A1 A2) \n                       (coq.mk-app A0 A1 A2)).",
                 "rule_loc": [
                   "File",
                   {
@@ -42516,13 +40752,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -42708,13 +40942,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -42733,8 +40965,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -42759,13 +40990,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -42780,8 +41009,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -42813,8 +41041,7 @@
       "Inference",
       {
         "current_goal_id": 1354,
-        "current_goal_text":
-          "if (var (global (indc «IsSelfA'.Axioms_»))) \n (coq.mk-app-uvar (global (indc «IsSelfA'.Axioms_»)) \n   [global (indt «nat»), global (indc «O»), \n    fun `x` (global (indt «nat»)) c0 \\ c0] X82) \n (coq.mk-app (global (indc «IsSelfA'.Axioms_»)) \n   [global (indt «nat»), global (indc «O»), \n    fun `x` (global (indt «nat»)) c0 \\ c0] X82)",
+        "current_goal_text": "if (var (global (indc «IsSelfA'.Axioms_»))) \n (coq.mk-app-uvar (global (indc «IsSelfA'.Axioms_»)) \n   [global (indt «nat»), global (indc «O»), \n    fun `x` (global (indt «nat»)) c0 \\ c0] X82) \n (coq.mk-app (global (indc «IsSelfA'.Axioms_»)) \n   [global (indt «nat»), global (indc «O»), \n    fun `x` (global (indt «nat»)) c0 \\ c0] X82)",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -42852,8 +41079,7 @@
               },
               { "goal_text": "!", "goal_id": 1356 },
               {
-                "goal_text":
-                  "coq.mk-app-uvar (global (indc «IsSelfA'.Axioms_»)) \n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] X82",
+                "goal_text": "coq.mk-app-uvar (global (indc «IsSelfA'.Axioms_»)) \n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] X82",
                 "goal_id": 1357
               }
             ],
@@ -42885,8 +41111,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-app-uvar A0 A1 A2) \n                       (coq.mk-app A0 A1 A2)).",
+                "rule_text": "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-app-uvar A0 A1 A2) \n                       (coq.mk-app A0 A1 A2)).",
                 "rule_loc": [
                   "File",
                   {
@@ -42905,13 +41130,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -43097,13 +41320,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -43122,8 +41343,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -43148,13 +41368,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -43169,8 +41387,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -43238,8 +41455,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-app-uvar A0 A1 A2) \n                       (coq.mk-app A0 A1 A2)).",
+                "rule_text": "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-app-uvar A0 A1 A2) \n                       (coq.mk-app A0 A1 A2)).",
                 "rule_loc": [
                   "File",
                   {
@@ -43258,13 +41474,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -43450,13 +41664,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -43475,8 +41687,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -43501,13 +41712,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -43522,8 +41731,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -43555,8 +41763,7 @@
       "Inference",
       {
         "current_goal_id": 1354,
-        "current_goal_text":
-          "if (var (global (indc «IsSelfA'.Axioms_»))) \n (coq.mk-app-uvar (global (indc «IsSelfA'.Axioms_»)) \n   [global (indt «nat»), global (indc «O»), \n    fun `x` (global (indt «nat»)) c0 \\ c0] X82) \n (coq.mk-app (global (indc «IsSelfA'.Axioms_»)) \n   [global (indt «nat»), global (indc «O»), \n    fun `x` (global (indt «nat»)) c0 \\ c0] X82)",
+        "current_goal_text": "if (var (global (indc «IsSelfA'.Axioms_»))) \n (coq.mk-app-uvar (global (indc «IsSelfA'.Axioms_»)) \n   [global (indt «nat»), global (indc «O»), \n    fun `x` (global (indt «nat»)) c0 \\ c0] X82) \n (coq.mk-app (global (indc «IsSelfA'.Axioms_»)) \n   [global (indt «nat»), global (indc «O»), \n    fun `x` (global (indt «nat»)) c0 \\ c0] X82)",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -43586,8 +41793,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.mk-app (global (indc «IsSelfA'.Axioms_»)) \n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] X82",
+                "goal_text": "coq.mk-app (global (indc «IsSelfA'.Axioms_»)) \n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] X82",
                 "goal_id": 1358
               }
             ],
@@ -43619,8 +41825,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-app-uvar A0 A1 A2) \n                       (coq.mk-app A0 A1 A2)).",
+                "rule_text": "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-app-uvar A0 A1 A2) \n                       (coq.mk-app A0 A1 A2)).",
                 "rule_loc": [
                   "File",
                   {
@@ -43639,13 +41844,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -43831,13 +42034,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -43856,8 +42057,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -43882,13 +42082,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -43903,8 +42101,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -43936,8 +42133,7 @@
       "Inference",
       {
         "current_goal_id": 1358,
-        "current_goal_text":
-          "coq.mk-app (global (indc «IsSelfA'.Axioms_»)) \n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] X82",
+        "current_goal_text": "coq.mk-app (global (indc «IsSelfA'.Axioms_»)) \n [global (indt «nat»), global (indc «O»), \n  fun `x` (global (indt «nat»)) c0 \\ c0] X82",
         "current_goal_predicate": "coq.mk-app",
         "failed_attempts": [
           {
@@ -44043,8 +42239,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-app-uvar A0 A1 A2) \n                       (coq.mk-app A0 A1 A2)).",
+                "rule_text": "(unwind A0 A1 A2) :- (if (var A0) (coq.mk-app-uvar A0 A1 A2) \n                       (coq.mk-app A0 A1 A2)).",
                 "rule_loc": [
                   "File",
                   {
@@ -44063,13 +42258,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
+                "rule_text": "(instance.private.optimize-body (app [global (const A0) | A1]) A2) :- (\n phant-abbrev _ (const A0) _ ;\n  coq.gref->id (const A0) A6 , rex_match phant_ A6), (!), \n (coq.env.const A0 (some A3) _), (hd-beta A3 A1 A4 A5), (unwind A4 A5 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 309,
                     "column": 0,
                     "character": 13433
@@ -44255,13 +42448,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -44280,8 +42471,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -44306,13 +42496,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -44327,8 +42515,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -44366,8 +42553,7 @@
       "Inference",
       {
         "current_goal_id": 1334,
-        "current_goal_text":
-          "std.do!\n [if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [if (_ = _) \n   (, (new_int X83) (std.any->string X83 X84) \n     (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _), \n  log.coq.env.add-const-noimplicits-failondup X85 \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -44376,8 +42562,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -44402,14 +42587,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if (_ = _) \n (, (new_int X83) (std.any->string X83 X84) \n   (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _)",
+                "goal_text": "if (_ = _) \n (, (new_int X83) (std.any->string X83 X84) \n   (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _)",
                 "goal_id": 1359
               },
               { "goal_text": "!", "goal_id": 1360 },
               {
-                "goal_text":
-                  "std.do!\n [log.coq.env.add-const-noimplicits-failondup X85 \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [log.coq.env.add-const-noimplicits-failondup X85 \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
                 "goal_id": 1361
               }
             ],
@@ -44612,13 +42795,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -44637,8 +42818,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -44663,13 +42843,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -44684,8 +42862,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -44717,8 +42894,7 @@
       "Inference",
       {
         "current_goal_id": 1359,
-        "current_goal_text":
-          "if (_ = _) \n (, (new_int X83) (std.any->string X83 X84) \n   (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _)",
+        "current_goal_text": "if (_ = _) \n (, (new_int X83) (std.any->string X83 X84) \n   (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _)",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -44751,8 +42927,7 @@
               { "goal_text": "_ = _", "goal_id": 1362 },
               { "goal_text": "!", "goal_id": 1363 },
               {
-                "goal_text":
-                  ", (new_int X83) (std.any->string X83 X84) (X85 is HB_unnamed_factory_ ^ X84)",
+                "goal_text": ", (new_int X83) (std.any->string X83 X84) (X85 is HB_unnamed_factory_ ^ X84)",
                 "goal_id": 1364
               }
             ],
@@ -44974,13 +43149,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -44999,8 +43172,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -45025,13 +43197,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -45046,8 +43216,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -45312,13 +43481,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -45337,8 +43504,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -45363,13 +43529,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -45384,8 +43548,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -45420,8 +43583,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "if (_ = _) \n (, (new_int X83) (std.any->string X83 X84) \n   (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _)",
+              "goal_text": "if (_ = _) \n (, (new_int X83) (std.any->string X83 X84) \n   (X85 is HB_unnamed_factory_ ^ X84)) (X85 = _)",
               "goal_id": 1359
             },
             "cut_branch": {
@@ -45449,8 +43611,7 @@
       "Inference",
       {
         "current_goal_id": 1364,
-        "current_goal_text":
-          ", (new_int X83) (std.any->string X83 X84) (X85 is HB_unnamed_factory_ ^ X84)",
+        "current_goal_text": ", (new_int X83) (std.any->string X83 X84) (X85 is HB_unnamed_factory_ ^ X84)",
         "current_goal_predicate": ",",
         "failed_attempts": [],
         "successful_attempts": [
@@ -45690,13 +43851,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -45715,8 +43874,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -45741,13 +43899,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -45762,8 +43918,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -46033,13 +44188,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -46058,8 +44211,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -46084,13 +44236,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -46105,8 +44255,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -46381,13 +44530,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -46406,8 +44553,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -46432,13 +44578,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -46453,8 +44597,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -46495,8 +44638,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.any->string A0 A1) :- (term_to_string A0 A1).",
+                  "rule_text": "(std.any->string A0 A1) :- (term_to_string A0 A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -46509,8 +44651,7 @@
                 }
               ],
               "events": [
-                [ "Assign", "A0 := 27" ],
-                [ "Assign", "A1 := X84" ]
+                [ "Assign", "A0 := 27" ], [ "Assign", "A1 := X84" ]
               ]
             },
             "siblings": [
@@ -46525,8 +44666,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.any->string A0 A1) :- (term_to_string A0 A1).",
+                "rule_text": "(std.any->string A0 A1) :- (term_to_string A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -46759,13 +44899,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -46784,8 +44922,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -46810,13 +44947,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -46831,8 +44966,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -46888,8 +45022,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.any->string A0 A1) :- (term_to_string A0 A1).",
+                "rule_text": "(std.any->string A0 A1) :- (term_to_string A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -47122,13 +45255,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -47147,8 +45278,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -47173,13 +45303,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -47194,8 +45322,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -47256,8 +45383,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.any->string A0 A1) :- (term_to_string A0 A1).",
+                "rule_text": "(std.any->string A0 A1) :- (term_to_string A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -47490,13 +45616,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -47515,8 +45639,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -47541,13 +45664,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -47562,8 +45683,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -47869,13 +45989,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -47894,8 +46012,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -47920,13 +46037,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -47941,8 +46056,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -48233,13 +46347,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -48258,8 +46370,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -48284,13 +46395,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -48305,8 +46414,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -48600,13 +46708,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -48625,8 +46731,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -48651,13 +46756,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -48672,8 +46775,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -48711,8 +46813,7 @@
       "Inference",
       {
         "current_goal_id": 1361,
-        "current_goal_text":
-          "std.do!\n [log.coq.env.add-const-noimplicits-failondup HB_unnamed_factory_27 \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [log.coq.env.add-const-noimplicits-failondup HB_unnamed_factory_27 \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  X87 = global (const X86), std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -48721,8 +46822,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -48747,14 +46847,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "log.coq.env.add-const-noimplicits-failondup HB_unnamed_factory_27 \n (app\n   [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86",
+                "goal_text": "log.coq.env.add-const-noimplicits-failondup HB_unnamed_factory_27 \n (app\n   [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86",
                 "goal_id": 1373
               },
               { "goal_text": "!", "goal_id": 1374 },
               {
-                "goal_text":
-                  "std.do!\n [X87 = global (const X86), std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [X87 = global (const X86), std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
                 "goal_id": 1375
               }
             ],
@@ -48976,13 +47074,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -49001,8 +47097,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -49027,13 +47122,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -49048,8 +47141,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -49081,10 +47173,8 @@
       "Inference",
       {
         "current_goal_id": 1373,
-        "current_goal_text":
-          "log.coq.env.add-const-noimplicits-failondup HB_unnamed_factory_27 \n (app\n   [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86",
-        "current_goal_predicate":
-          "log.coq.env.add-const-noimplicits-failondup",
+        "current_goal_text": "log.coq.env.add-const-noimplicits-failondup HB_unnamed_factory_27 \n (app\n   [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86",
+        "current_goal_predicate": "log.coq.env.add-const-noimplicits-failondup",
         "failed_attempts": [],
         "successful_attempts": [
           {
@@ -49092,13 +47182,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                  "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                       "line": 59,
                       "column": 0,
                       "character": 2355
@@ -49122,8 +47210,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.do!\n [if\n   (not\n     (ground_term\n       (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ;\n       ground_term\n        (app\n          [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n           global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))) \n   (,\n     (coq.term->string\n       (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X111) \n     (coq.term->string\n       (app\n         [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n          global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X112) \n     (coq.error HB: cannot infer some information in HB_unnamed_factory_27 : \n       X111 := X112)) true, \n  coq.env.add-const HB_unnamed_factory_27 \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  log.coq.env.add-location (const X86), \n  if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (X113 = none) \n   (X113 =\n     some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const X86) [[]]]",
+                "goal_text": "std.do!\n [if\n   (not\n     (ground_term\n       (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ;\n       ground_term\n        (app\n          [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n           global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))) \n   (,\n     (coq.term->string\n       (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X111) \n     (coq.term->string\n       (app\n         [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n          global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X112) \n     (coq.error HB: cannot infer some information in HB_unnamed_factory_27 : \n       X111 := X112)) true, \n  coq.env.add-const HB_unnamed_factory_27 \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  log.coq.env.add-location (const X86), \n  if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (X113 = none) \n   (X113 =\n     some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const X86) [[]]]",
                 "goal_id": 1376
               }
             ],
@@ -49136,13 +47223,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -49366,13 +47451,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -49391,8 +47474,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -49417,13 +47499,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -49438,8 +47518,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -49471,8 +47550,7 @@
       "Inference",
       {
         "current_goal_id": 1376,
-        "current_goal_text":
-          "std.do!\n [if\n   (not\n     (ground_term\n       (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ;\n       ground_term\n        (app\n          [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n           global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))) \n   (,\n     (coq.term->string\n       (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X111) \n     (coq.term->string\n       (app\n         [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n          global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X112) \n     (coq.error HB: cannot infer some information in HB_unnamed_factory_27 : \n       X111 := X112)) true, \n  coq.env.add-const HB_unnamed_factory_27 \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  log.coq.env.add-location (const X86), \n  if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (X113 = none) \n   (X113 =\n     some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const X86) [[]]]",
+        "current_goal_text": "std.do!\n [if\n   (not\n     (ground_term\n       (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ;\n       ground_term\n        (app\n          [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n           global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))) \n   (,\n     (coq.term->string\n       (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X111) \n     (coq.term->string\n       (app\n         [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n          global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X112) \n     (coq.error HB: cannot infer some information in HB_unnamed_factory_27 : \n       X111 := X112)) true, \n  coq.env.add-const HB_unnamed_factory_27 \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  log.coq.env.add-location (const X86), \n  if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (X113 = none) \n   (X113 =\n     some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const X86) [[]]]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -49481,8 +47559,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -49507,14 +47584,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if\n (not\n   (ground_term\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ;\n     ground_term\n      (app\n        [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n         global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))) \n (,\n   (coq.term->string\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X111) \n   (coq.term->string\n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X112) \n   (coq.error HB: cannot infer some information in HB_unnamed_factory_27 : \n     X111 := X112)) true",
+                "goal_text": "if\n (not\n   (ground_term\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ;\n     ground_term\n      (app\n        [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n         global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))) \n (,\n   (coq.term->string\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X111) \n   (coq.term->string\n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X112) \n   (coq.error HB: cannot infer some information in HB_unnamed_factory_27 : \n     X111 := X112)) true",
                 "goal_id": 1377
               },
               { "goal_text": "!", "goal_id": 1378 },
               {
-                "goal_text":
-                  "std.do!\n [coq.env.add-const HB_unnamed_factory_27 \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  log.coq.env.add-location (const X86), \n  if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (X113 = none) \n   (X113 =\n     some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const X86) [[]]]",
+                "goal_text": "std.do!\n [coq.env.add-const HB_unnamed_factory_27 \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  log.coq.env.add-location (const X86), \n  if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (X113 = none) \n   (X113 =\n     some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const X86) [[]]]",
                 "goal_id": 1379
               }
             ],
@@ -49546,13 +47621,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -49776,13 +47849,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -49801,8 +47872,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -49827,13 +47897,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -49848,8 +47916,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -49881,8 +47948,7 @@
       "Inference",
       {
         "current_goal_id": 1377,
-        "current_goal_text":
-          "if\n (not\n   (ground_term\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ;\n     ground_term\n      (app\n        [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n         global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))) \n (,\n   (coq.term->string\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X111) \n   (coq.term->string\n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X112) \n   (coq.error HB: cannot infer some information in HB_unnamed_factory_27 : \n     X111 := X112)) true",
+        "current_goal_text": "if\n (not\n   (ground_term\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ;\n     ground_term\n      (app\n        [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n         global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))) \n (,\n   (coq.term->string\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X111) \n   (coq.term->string\n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X112) \n   (coq.error HB: cannot infer some information in HB_unnamed_factory_27 : \n     X111 := X112)) true",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -49916,14 +47982,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "not\n (ground_term\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ;\n   ground_term\n    (app\n      [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n       global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))",
+                "goal_text": "not\n (ground_term\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ;\n   ground_term\n    (app\n      [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n       global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))",
                 "goal_id": 1380
               },
               { "goal_text": "!", "goal_id": 1381 },
               {
-                "goal_text":
-                  ",\n (coq.term->string\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X111) \n (coq.term->string\n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X112) \n (coq.error HB: cannot infer some information in HB_unnamed_factory_27 : \n   X111 := X112)",
+                "goal_text": ",\n (coq.term->string\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X111) \n (coq.term->string\n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X112) \n (coq.error HB: cannot infer some information in HB_unnamed_factory_27 : \n   X111 := X112)",
                 "goal_id": 1382
               }
             ],
@@ -49974,13 +48038,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -50204,13 +48266,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -50229,8 +48289,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -50255,13 +48314,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -50276,8 +48333,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -50309,8 +48365,7 @@
       "Inference",
       {
         "current_goal_id": 1380,
-        "current_goal_text":
-          "not\n (ground_term\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ;\n   ground_term\n    (app\n      [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n       global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))",
+        "current_goal_text": "not\n (ground_term\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ;\n   ground_term\n    (app\n      [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n       global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))",
         "current_goal_predicate": "not",
         "failed_attempts": [],
         "successful_attempts": [
@@ -50340,8 +48395,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "ground_term (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])\n ;\n ground_term\n  (app\n    [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n     global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])",
+                "goal_text": "ground_term (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])\n ;\n ground_term\n  (app\n    [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n     global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])",
                 "goal_id": 1383
               },
               { "goal_text": "!", "goal_id": 1384 },
@@ -50413,13 +48467,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -50643,13 +48695,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -50668,8 +48718,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -50694,13 +48743,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -50715,8 +48762,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -50748,8 +48794,7 @@
       "Inference",
       {
         "current_goal_id": 1383,
-        "current_goal_text":
-          "ground_term (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])\n ;\n ground_term\n  (app\n    [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n     global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])",
+        "current_goal_text": "ground_term (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])\n ;\n ground_term\n  (app\n    [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n     global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -50779,8 +48824,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "ground_term (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
+                "goal_text": "ground_term (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
                 "goal_id": 1386
               }
             ],
@@ -50869,13 +48913,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -51099,13 +49141,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -51124,8 +49164,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -51150,13 +49189,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -51171,8 +49208,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -51204,8 +49240,7 @@
       "Inference",
       {
         "current_goal_id": 1386,
-        "current_goal_text":
-          "ground_term (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
+        "current_goal_text": "ground_term (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
         "current_goal_predicate": "ground_term",
         "failed_attempts": [],
         "successful_attempts": [
@@ -51305,13 +49340,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -51535,13 +49568,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -51560,8 +49591,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -51586,13 +49616,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -51607,8 +49635,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -51643,8 +49670,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "ground_term (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])\n ;\n ground_term\n  (app\n    [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n     global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])",
+              "goal_text": "ground_term (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])\n ;\n ground_term\n  (app\n    [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n     global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])",
               "goal_id": 1383
             },
             "cut_branch": {
@@ -51662,8 +49688,7 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "not\n (ground_term\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ;\n   ground_term\n    (app\n      [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n       global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))",
+              "goal_text": "not\n (ground_term\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ;\n   ground_term\n    (app\n      [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n       global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))",
               "goal_id": 1380
             },
             "cut_branch": {
@@ -51758,13 +49783,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -51988,13 +50011,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -52013,8 +50034,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -52039,13 +50059,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -52060,8 +50078,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -52093,8 +50110,7 @@
       "Inference",
       {
         "current_goal_id": 1377,
-        "current_goal_text":
-          "if\n (not\n   (ground_term\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ;\n     ground_term\n      (app\n        [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n         global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))) \n (,\n   (coq.term->string\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X111) \n   (coq.term->string\n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X112) \n   (coq.error HB: cannot infer some information in HB_unnamed_factory_27 : \n     X111 := X112)) true",
+        "current_goal_text": "if\n (not\n   (ground_term\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ;\n     ground_term\n      (app\n        [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n         global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))) \n (,\n   (coq.term->string\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X111) \n   (coq.term->string\n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) X112) \n   (coq.error HB: cannot infer some information in HB_unnamed_factory_27 : \n     X111 := X112)) true",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -52165,13 +50181,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -52395,13 +50409,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -52420,8 +50432,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -52446,13 +50457,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -52467,8 +50476,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -52590,13 +50598,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -52820,13 +50826,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -52845,8 +50849,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -52871,13 +50874,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -52892,8 +50893,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -52931,8 +50931,7 @@
       "Inference",
       {
         "current_goal_id": 1379,
-        "current_goal_text":
-          "std.do!\n [coq.env.add-const HB_unnamed_factory_27 \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  log.coq.env.add-location (const X86), \n  if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (X113 = none) \n   (X113 =\n     some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const X86) [[]]]",
+        "current_goal_text": "std.do!\n [coq.env.add-const HB_unnamed_factory_27 \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86, \n  log.coq.env.add-location (const X86), \n  if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (X113 = none) \n   (X113 =\n     some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const X86) [[]]]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -52941,8 +50940,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -52967,14 +50965,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.env.add-const HB_unnamed_factory_27 \n (app\n   [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86",
+                "goal_text": "coq.env.add-const HB_unnamed_factory_27 \n (app\n   [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86",
                 "goal_id": 1388
               },
               { "goal_text": "!", "goal_id": 1389 },
               {
-                "goal_text":
-                  "std.do!\n [log.coq.env.add-location (const X86), \n  if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (X113 = none) \n   (X113 =\n     some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const X86) [[]]]",
+                "goal_text": "std.do!\n [log.coq.env.add-location (const X86), \n  if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (X113 = none) \n   (X113 =\n     some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const X86) [[]]]",
                 "goal_id": 1390
               }
             ],
@@ -53025,13 +51021,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -53255,13 +51249,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -53280,8 +51272,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -53306,13 +51297,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -53327,8 +51316,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -53360,8 +51348,7 @@
       "Inference",
       {
         "current_goal_id": 1388,
-        "current_goal_text":
-          "coq.env.add-const HB_unnamed_factory_27 \n (app\n   [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86",
+        "current_goal_text": "coq.env.add-const HB_unnamed_factory_27 \n (app\n   [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n    global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]) \n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) ff X86",
         "current_goal_predicate": "coq.env.add-const",
         "failed_attempts": [],
         "successful_attempts": [
@@ -53428,13 +51415,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -53658,13 +51643,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -53683,8 +51666,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -53709,13 +51691,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -53730,8 +51710,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -53830,13 +51809,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -54060,13 +52037,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -54085,8 +52060,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -54111,13 +52085,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -54132,8 +52104,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -54171,8 +52142,7 @@
       "Inference",
       {
         "current_goal_id": 1390,
-        "current_goal_text":
-          "std.do!\n [log.coq.env.add-location (const «HB_unnamed_factory_27»), \n  if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (X113 = none) \n   (X113 =\n     some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]]",
+        "current_goal_text": "std.do!\n [log.coq.env.add-location (const «HB_unnamed_factory_27»), \n  if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (X113 = none) \n   (X113 =\n     some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -54181,8 +52151,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -54207,14 +52176,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "log.coq.env.add-location (const «HB_unnamed_factory_27»)",
+                "goal_text": "log.coq.env.add-location (const «HB_unnamed_factory_27»)",
                 "goal_id": 1392
               },
               { "goal_text": "!", "goal_id": 1393 },
               {
-                "goal_text":
-                  "std.do!\n [if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (X113 = none) \n   (X113 =\n     some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]]",
+                "goal_text": "std.do!\n [if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (X113 = none) \n   (X113 =\n     some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]]",
                 "goal_id": 1394
               }
             ],
@@ -54284,13 +52251,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -54514,13 +52479,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -54539,8 +52502,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -54565,13 +52527,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -54586,8 +52546,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -54619,8 +52578,7 @@
       "Inference",
       {
         "current_goal_id": 1392,
-        "current_goal_text":
-          "log.coq.env.add-location (const «HB_unnamed_factory_27»)",
+        "current_goal_text": "log.coq.env.add-location (const «HB_unnamed_factory_27»)",
         "current_goal_predicate": "log.coq.env.add-location",
         "failed_attempts": [],
         "successful_attempts": [
@@ -54629,13 +52587,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(log.coq.env.add-location A0) :- (if (get-option elpi.loc A1) \n                                   (acc-clause library (decl-location A0 A1)) \n                                   true).",
+                  "rule_text": "(log.coq.env.add-location A0) :- (if (get-option elpi.loc A1) \n                                   (acc-clause library (decl-location A0 A1)) \n                                   true).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                       "line": 21,
                       "column": 0,
                       "character": 831
@@ -54649,8 +52605,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if (get-option elpi.loc X114) \n (acc-clause library (decl-location (const «HB_unnamed_factory_27») X114)) \n true",
+                "goal_text": "if (get-option elpi.loc X114) \n (acc-clause library (decl-location (const «HB_unnamed_factory_27») X114)) \n true",
                 "goal_id": 1395
               }
             ],
@@ -54663,13 +52618,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-location A0) :- (if (get-option elpi.loc A1) \n                                   (acc-clause library (decl-location A0 A1)) \n                                   true).",
+                "rule_text": "(log.coq.env.add-location A0) :- (if (get-option elpi.loc A1) \n                                   (acc-clause library (decl-location A0 A1)) \n                                   true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 21,
                     "column": 0,
                     "character": 831
@@ -54741,13 +52694,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -54971,13 +52922,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -54996,8 +52945,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -55022,13 +52970,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -55043,8 +52989,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -55076,8 +53021,7 @@
       "Inference",
       {
         "current_goal_id": 1395,
-        "current_goal_text":
-          "if (get-option elpi.loc X114) \n (acc-clause library (decl-location (const «HB_unnamed_factory_27») X114)) \n true",
+        "current_goal_text": "if (get-option elpi.loc X114) \n (acc-clause library (decl-location (const «HB_unnamed_factory_27») X114)) \n true",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -55110,8 +53054,7 @@
               { "goal_text": "get-option elpi.loc X114", "goal_id": 1396 },
               { "goal_text": "!", "goal_id": 1397 },
               {
-                "goal_text":
-                  "acc-clause library (decl-location (const «HB_unnamed_factory_27») X114)",
+                "goal_text": "acc-clause library (decl-location (const «HB_unnamed_factory_27») X114)",
                 "goal_id": 1398
               }
             ],
@@ -55143,13 +53086,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-location A0) :- (if (get-option elpi.loc A1) \n                                   (acc-clause library (decl-location A0 A1)) \n                                   true).",
+                "rule_text": "(log.coq.env.add-location A0) :- (if (get-option elpi.loc A1) \n                                   (acc-clause library (decl-location A0 A1)) \n                                   true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 21,
                     "column": 0,
                     "character": 831
@@ -55221,13 +53162,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -55451,13 +53390,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -55476,8 +53413,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -55502,13 +53438,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -55523,8 +53457,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -55565,8 +53498,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(get-option elpi.loc File \"(stdin)\", line 1, column 2, character 3:) :- .",
+                  "rule_text": "(get-option elpi.loc File \"(stdin)\", line 1, column 2, character 3:) :- .",
                   "rule_loc": [ "Context", 74 ]
                 }
               ],
@@ -55587,8 +53519,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(get-option elpi.loc File \"(stdin)\", line 1, column 2, character 3:) :- .",
+                "rule_text": "(get-option elpi.loc File \"(stdin)\", line 1, column 2, character 3:) :- .",
                 "rule_loc": [ "Context", 74 ]
               }
             ],
@@ -55618,13 +53549,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-location A0) :- (if (get-option elpi.loc A1) \n                                   (acc-clause library (decl-location A0 A1)) \n                                   true).",
+                "rule_text": "(log.coq.env.add-location A0) :- (if (get-option elpi.loc A1) \n                                   (acc-clause library (decl-location A0 A1)) \n                                   true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 21,
                     "column": 0,
                     "character": 831
@@ -55696,13 +53625,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -55926,13 +53853,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -55951,8 +53876,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -55977,13 +53901,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -55998,8 +53920,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -56034,8 +53955,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "if (get-option elpi.loc X114) \n (acc-clause library (decl-location (const «HB_unnamed_factory_27») X114)) \n true",
+              "goal_text": "if (get-option elpi.loc X114) \n (acc-clause library (decl-location (const «HB_unnamed_factory_27») X114)) \n true",
               "goal_id": 1395
             },
             "cut_branch": {
@@ -56063,8 +53983,7 @@
       "Inference",
       {
         "current_goal_id": 1398,
-        "current_goal_text":
-          "acc-clause library \n (decl-location (const «HB_unnamed_factory_27») \n   File \"(stdin)\", line 1, column 2, character 3:)",
+        "current_goal_text": "acc-clause library \n (decl-location (const «HB_unnamed_factory_27») \n   File \"(stdin)\", line 1, column 2, character 3:)",
         "current_goal_predicate": "acc-clause",
         "failed_attempts": [],
         "successful_attempts": [
@@ -56073,13 +53992,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(acc-clause A0 A1) :- (coq.elpi.accumulate A0 hb.db (clause _ _ A1)).",
+                  "rule_text": "(acc-clause A0 A1) :- (coq.elpi.accumulate A0 hb.db (clause _ _ A1)).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                       "line": 75,
                       "column": 0,
                       "character": 2237
@@ -56097,8 +54014,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.elpi.accumulate library hb.db \n (clause _ _ \n   (decl-location (const «HB_unnamed_factory_27») \n     File \"(stdin)\", line 1, column 2, character 3:))",
+                "goal_text": "coq.elpi.accumulate library hb.db \n (clause _ _ \n   (decl-location (const «HB_unnamed_factory_27») \n     File \"(stdin)\", line 1, column 2, character 3:))",
                 "goal_id": 1399
               }
             ],
@@ -56111,13 +54027,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(acc-clause A0 A1) :- (coq.elpi.accumulate A0 hb.db (clause _ _ A1)).",
+                "rule_text": "(acc-clause A0 A1) :- (coq.elpi.accumulate A0 hb.db (clause _ _ A1)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 75,
                     "column": 0,
                     "character": 2237
@@ -56151,13 +54065,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-location A0) :- (if (get-option elpi.loc A1) \n                                   (acc-clause library (decl-location A0 A1)) \n                                   true).",
+                "rule_text": "(log.coq.env.add-location A0) :- (if (get-option elpi.loc A1) \n                                   (acc-clause library (decl-location A0 A1)) \n                                   true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 21,
                     "column": 0,
                     "character": 831
@@ -56229,13 +54141,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -56459,13 +54369,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -56484,8 +54392,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -56510,13 +54417,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -56531,8 +54436,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -56564,8 +54468,7 @@
       "Inference",
       {
         "current_goal_id": 1399,
-        "current_goal_text":
-          "coq.elpi.accumulate library hb.db \n (clause _ _ \n   (decl-location (const «HB_unnamed_factory_27») \n     File \"(stdin)\", line 1, column 2, character 3:))",
+        "current_goal_text": "coq.elpi.accumulate library hb.db \n (clause _ _ \n   (decl-location (const «HB_unnamed_factory_27») \n     File \"(stdin)\", line 1, column 2, character 3:))",
         "current_goal_predicate": "coq.elpi.accumulate",
         "failed_attempts": [],
         "successful_attempts": [
@@ -56589,13 +54492,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(acc-clause A0 A1) :- (coq.elpi.accumulate A0 hb.db (clause _ _ A1)).",
+                "rule_text": "(acc-clause A0 A1) :- (coq.elpi.accumulate A0 hb.db (clause _ _ A1)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 75,
                     "column": 0,
                     "character": 2237
@@ -56629,13 +54530,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-location A0) :- (if (get-option elpi.loc A1) \n                                   (acc-clause library (decl-location A0 A1)) \n                                   true).",
+                "rule_text": "(log.coq.env.add-location A0) :- (if (get-option elpi.loc A1) \n                                   (acc-clause library (decl-location A0 A1)) \n                                   true).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 21,
                     "column": 0,
                     "character": 831
@@ -56707,13 +54606,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -56937,13 +54834,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -56962,8 +54857,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -56988,13 +54882,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -57009,8 +54901,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -57048,8 +54939,7 @@
       "Inference",
       {
         "current_goal_id": 1394,
-        "current_goal_text":
-          "std.do!\n [if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (X113 = none) \n   (X113 =\n     some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]]",
+        "current_goal_text": "std.do!\n [if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (X113 = none) \n   (X113 =\n     some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])), \n  log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -57058,8 +54948,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -57084,14 +54973,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n (X113 = none) \n (X113 =\n   some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]))",
+                "goal_text": "if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n (X113 = none) \n (X113 =\n   some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]))",
                 "goal_id": 1400
               },
               { "goal_text": "!", "goal_id": 1401 },
               {
-                "goal_text":
-                  "std.do!\n [log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]]",
+                "goal_text": "std.do!\n [log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 X113 \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]]",
                 "goal_id": 1402
               }
             ],
@@ -57180,13 +55067,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -57410,13 +55295,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -57435,8 +55318,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -57461,13 +55343,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -57482,8 +55362,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -57515,8 +55394,7 @@
       "Inference",
       {
         "current_goal_id": 1400,
-        "current_goal_text":
-          "if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n (X113 = none) \n (X113 =\n   some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]))",
+        "current_goal_text": "if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n (X113 = none) \n (X113 =\n   some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]))",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -57547,8 +55425,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
+                "goal_text": "var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
                 "goal_id": 1403
               },
               { "goal_text": "!", "goal_id": 1404 },
@@ -57658,13 +55535,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -57888,13 +55763,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -57913,8 +55786,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -57939,13 +55811,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -57960,8 +55830,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -57993,8 +55862,7 @@
       "Inference",
       {
         "current_goal_id": 1403,
-        "current_goal_text":
-          "var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
+        "current_goal_text": "var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
         "current_goal_predicate": "var",
         "failed_attempts": [
           { "rule": [ "BuiltinRule", [ "FFI", "var" ] ], "events": [] }
@@ -58106,13 +55974,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -58336,13 +56202,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -58361,8 +56225,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -58387,13 +56250,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -58408,8 +56269,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -58441,8 +56301,7 @@
       "Inference",
       {
         "current_goal_id": 1400,
-        "current_goal_text":
-          "if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n (X113 = none) \n (X113 =\n   some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]))",
+        "current_goal_text": "if (var (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n (X113 = none) \n (X113 =\n   some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]))",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -58472,8 +56331,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "X113 = some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
+                "goal_text": "X113 = some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
                 "goal_id": 1406
               }
             ],
@@ -58581,13 +56439,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -58811,13 +56667,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -58836,8 +56690,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -58862,13 +56715,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -58883,8 +56734,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -58916,8 +56766,7 @@
       "Inference",
       {
         "current_goal_id": 1406,
-        "current_goal_text":
-          "X113 = some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
+        "current_goal_text": "X113 = some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])",
         "current_goal_predicate": "=",
         "failed_attempts": [],
         "successful_attempts": [
@@ -59041,13 +56890,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -59271,13 +57118,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -59296,8 +57141,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -59322,13 +57166,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -59343,8 +57185,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -59382,8 +57223,7 @@
       "Inference",
       {
         "current_goal_id": 1402,
-        "current_goal_text":
-          "std.do!\n [log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 \n     (some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]]",
+        "current_goal_text": "std.do!\n [log.private.log-vernac\n   (log.private.coq.vernac.definition HB_unnamed_factory_27 \n     (some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n     (app\n       [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n        global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])), \n  get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -59392,8 +57232,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -59418,14 +57257,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "log.private.log-vernac\n (log.private.coq.vernac.definition HB_unnamed_factory_27 \n   (some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))",
+                "goal_text": "log.private.log-vernac\n (log.private.coq.vernac.definition HB_unnamed_factory_27 \n   (some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))",
                 "goal_id": 1407
               },
               { "goal_text": "!", "goal_id": 1408 },
               {
-                "goal_text":
-                  "std.do!\n [get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]]",
+                "goal_text": "std.do!\n [get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]]",
                 "goal_id": 1409
               }
             ],
@@ -59533,13 +57370,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -59763,13 +57598,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -59788,8 +57621,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -59814,13 +57646,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -59835,8 +57665,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -59868,8 +57697,7 @@
       "Inference",
       {
         "current_goal_id": 1407,
-        "current_goal_text":
-          "log.private.log-vernac\n (log.private.coq.vernac.definition HB_unnamed_factory_27 \n   (some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))",
+        "current_goal_text": "log.private.log-vernac\n (log.private.coq.vernac.definition HB_unnamed_factory_27 \n   (some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))",
         "current_goal_predicate": "log.private.log-vernac",
         "failed_attempts": [],
         "successful_attempts": [
@@ -59878,13 +57706,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(log.private.log-vernac A0) :- (log.private.logger A1 A2), (!), \n (if (A2 = tt) (A3 = []) (A3 = [get-option coq:pp all])), \n (A3 => log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-extend A1 A4).",
+                  "rule_text": "(log.private.log-vernac A0) :- (log.private.logger A1 A2), (!), \n (if (A2 = tt) (A3 = []) (A3 = [get-option coq:pp all])), \n (A3 => log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-extend A1 A4).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                       "line": 291,
                       "column": 0,
                       "character": 11441
@@ -59906,13 +57732,11 @@
               },
               { "goal_text": "!", "goal_id": 1411 },
               {
-                "goal_text":
-                  "if (X116 = tt) (X117 = []) (X117 = [get-option coq:pp all])",
+                "goal_text": "if (X116 = tt) (X117 = []) (X117 = [get-option coq:pp all])",
                 "goal_id": 1412
               },
               {
-                "goal_text":
-                  "X117 =>\n log.private.coq.vernac->pp\n  [log.private.coq.vernac.definition HB_unnamed_factory_27 \n    (some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n    (app\n      [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n       global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])] X118",
+                "goal_text": "X117 =>\n log.private.coq.vernac->pp\n  [log.private.coq.vernac.definition HB_unnamed_factory_27 \n    (some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n    (app\n      [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n       global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0])] X118",
                 "goal_id": 1413
               },
               {
@@ -59929,13 +57753,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.private.log-vernac A0) :- (log.private.logger A1 A2), (!), \n (if (A2 = tt) (A3 = []) (A3 = [get-option coq:pp all])), \n (A3 => log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-extend A1 A4).",
+                "rule_text": "(log.private.log-vernac A0) :- (log.private.logger A1 A2), (!), \n (if (A2 = tt) (A3 = []) (A3 = [get-option coq:pp all])), \n (A3 => log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-extend A1 A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 291,
                     "column": 0,
                     "character": 11441
@@ -60045,13 +57867,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -60275,13 +58095,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -60300,8 +58118,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -60326,13 +58143,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -60347,8 +58162,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -60390,13 +58204,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.private.log-vernac A0) :- (log.private.logger A1 A2), (!), \n (if (A2 = tt) (A3 = []) (A3 = [get-option coq:pp all])), \n (A3 => log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-extend A1 A4).",
+                "rule_text": "(log.private.log-vernac A0) :- (log.private.logger A1 A2), (!), \n (if (A2 = tt) (A3 = []) (A3 = [get-option coq:pp all])), \n (A3 => log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-extend A1 A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 291,
                     "column": 0,
                     "character": 11441
@@ -60506,13 +58318,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -60736,13 +58546,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -60761,8 +58569,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -60787,13 +58594,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -60808,8 +58613,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -60841,8 +58645,7 @@
       "Inference",
       {
         "current_goal_id": 1407,
-        "current_goal_text":
-          "log.private.log-vernac\n (log.private.coq.vernac.definition HB_unnamed_factory_27 \n   (some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))",
+        "current_goal_text": "log.private.log-vernac\n (log.private.coq.vernac.definition HB_unnamed_factory_27 \n   (some (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)])) \n   (app\n     [global (indc «IsSelfA'.Axioms_»), global (indt «nat»), \n      global (indc «O»), fun `x` (global (indt «nat»)) c0 \\ c0]))",
         "current_goal_predicate": "log.private.log-vernac",
         "failed_attempts": [],
         "successful_attempts": [
@@ -60855,8 +58658,7 @@
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                       "line": 294,
                       "column": 0,
                       "character": 11623
@@ -60880,8 +58682,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 294,
                     "column": 0,
                     "character": 11623
@@ -60991,13 +58792,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -61221,13 +59020,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -61246,8 +59043,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -61272,13 +59068,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -61293,8 +59087,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -61332,8 +59125,7 @@
       "Inference",
       {
         "current_goal_id": 1409,
-        "current_goal_text":
-          "std.do!\n [get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]]",
+        "current_goal_text": "std.do!\n [get-option coq:locality local =>\n   log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -61342,8 +59134,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -61365,8 +59156,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "get-option coq:locality local =>\n log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]",
+                "goal_text": "get-option coq:locality local =>\n log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]",
                 "goal_id": 1415
               },
               { "goal_text": "!", "goal_id": 1416 },
@@ -61495,13 +59285,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -61725,13 +59513,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -61750,8 +59536,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -61776,13 +59561,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -61797,8 +59580,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -61830,8 +59612,7 @@
       "Inference",
       {
         "current_goal_id": 1415,
-        "current_goal_text":
-          "get-option coq:locality local =>\n log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]",
+        "current_goal_text": "get-option coq:locality local =>\n log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]",
         "current_goal_predicate": "=>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -61842,8 +59623,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]",
+                "goal_text": "log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]",
                 "goal_id": 1418
               }
             ],
@@ -61975,13 +59755,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -62205,13 +59983,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -62230,8 +60006,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -62256,13 +60031,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -62277,8 +60050,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -62310,8 +60082,7 @@
       "Inference",
       {
         "current_goal_id": 1418,
-        "current_goal_text":
-          "log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]",
+        "current_goal_text": "log.coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]",
         "current_goal_predicate": "log.coq.arguments.set-implicit",
         "failed_attempts": [],
         "successful_attempts": [
@@ -62320,13 +60091,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
+                  "rule_text": "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                       "line": 14,
                       "column": 0,
                       "character": 592
@@ -62341,8 +60110,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.do!\n [coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]], \n  if (get-option coq:locality local) (X119 = tt) (X119 = ff), \n  (coq.gref->id (const «HB_unnamed_factory_27») X120 ,\n    log.private.log-vernac (log.private.coq.vernac.implicit X119 X120 [[]]))]",
+                "goal_text": "std.do!\n [coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]], \n  if (get-option coq:locality local) (X119 = tt) (X119 = ff), \n  (coq.gref->id (const «HB_unnamed_factory_27») X120 ,\n    log.private.log-vernac (log.private.coq.vernac.implicit X119 X120 [[]]))]",
                 "goal_id": 1419
               }
             ],
@@ -62355,13 +60123,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
+                "rule_text": "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 592
@@ -62495,13 +60261,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -62725,13 +60489,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -62750,8 +60512,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -62776,13 +60537,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -62797,8 +60556,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -62830,8 +60588,7 @@
       "Inference",
       {
         "current_goal_id": 1419,
-        "current_goal_text":
-          "std.do!\n [coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]], \n  if (get-option coq:locality local) (X119 = tt) (X119 = ff), \n  (coq.gref->id (const «HB_unnamed_factory_27») X120 ,\n    log.private.log-vernac (log.private.coq.vernac.implicit X119 X120 [[]]))]",
+        "current_goal_text": "std.do!\n [coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]], \n  if (get-option coq:locality local) (X119 = tt) (X119 = ff), \n  (coq.gref->id (const «HB_unnamed_factory_27») X120 ,\n    log.private.log-vernac (log.private.coq.vernac.implicit X119 X120 [[]]))]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -62840,8 +60597,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -62866,14 +60622,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]",
+                "goal_text": "coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]",
                 "goal_id": 1420
               },
               { "goal_text": "!", "goal_id": 1421 },
               {
-                "goal_text":
-                  "std.do!\n [if (get-option coq:locality local) (X119 = tt) (X119 = ff), \n  (coq.gref->id (const «HB_unnamed_factory_27») X120 ,\n    log.private.log-vernac (log.private.coq.vernac.implicit X119 X120 [[]]))]",
+                "goal_text": "std.do!\n [if (get-option coq:locality local) (X119 = tt) (X119 = ff), \n  (coq.gref->id (const «HB_unnamed_factory_27») X120 ,\n    log.private.log-vernac (log.private.coq.vernac.implicit X119 X120 [[]]))]",
                 "goal_id": 1422
               }
             ],
@@ -62905,13 +60659,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
+                "rule_text": "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 592
@@ -63045,13 +60797,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -63275,13 +61025,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -63300,8 +61048,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -63326,13 +61073,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -63347,8 +61092,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -63380,16 +61124,14 @@
       "Inference",
       {
         "current_goal_id": 1420,
-        "current_goal_text":
-          "coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]",
+        "current_goal_text": "coq.arguments.set-implicit (const «HB_unnamed_factory_27») [[]]",
         "current_goal_predicate": "coq.arguments.set-implicit",
         "failed_attempts": [],
         "successful_attempts": [
           {
             "attempt": {
               "rule": [
-                "BuiltinRule",
-                [ "FFI", "coq.arguments.set-implicit" ]
+                "BuiltinRule", [ "FFI", "coq.arguments.set-implicit" ]
               ],
               "events": []
             },
@@ -63401,8 +61143,7 @@
         "stack": [
           {
             "rule": [
-              "BuiltinRule",
-              [ "FFI", "coq.arguments.set-implicit" ]
+              "BuiltinRule", [ "FFI", "coq.arguments.set-implicit" ]
             ],
             "step_id": 261,
             "runtime_id": 8
@@ -63430,13 +61171,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
+                "rule_text": "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 592
@@ -63570,13 +61309,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -63800,13 +61537,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -63825,8 +61560,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -63851,13 +61585,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -63872,8 +61604,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -63911,8 +61642,7 @@
       "Inference",
       {
         "current_goal_id": 1422,
-        "current_goal_text":
-          "std.do!\n [if (get-option coq:locality local) (X119 = tt) (X119 = ff), \n  (coq.gref->id (const «HB_unnamed_factory_27») X120 ,\n    log.private.log-vernac (log.private.coq.vernac.implicit X119 X120 [[]]))]",
+        "current_goal_text": "std.do!\n [if (get-option coq:locality local) (X119 = tt) (X119 = ff), \n  (coq.gref->id (const «HB_unnamed_factory_27») X120 ,\n    log.private.log-vernac (log.private.coq.vernac.implicit X119 X120 [[]]))]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -63921,8 +61651,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -63947,14 +61676,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if (get-option coq:locality local) (X119 = tt) (X119 = ff)",
+                "goal_text": "if (get-option coq:locality local) (X119 = tt) (X119 = ff)",
                 "goal_id": 1423
               },
               { "goal_text": "!", "goal_id": 1424 },
               {
-                "goal_text":
-                  "std.do!\n [(coq.gref->id (const «HB_unnamed_factory_27») X120 ,\n    log.private.log-vernac (log.private.coq.vernac.implicit X119 X120 [[]]))]",
+                "goal_text": "std.do!\n [(coq.gref->id (const «HB_unnamed_factory_27») X120 ,\n    log.private.log-vernac (log.private.coq.vernac.implicit X119 X120 [[]]))]",
                 "goal_id": 1425
               }
             ],
@@ -64005,13 +61732,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
+                "rule_text": "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 592
@@ -64145,13 +61870,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -64375,13 +62098,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -64400,8 +62121,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -64426,13 +62146,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -64447,8 +62165,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -64480,8 +62197,7 @@
       "Inference",
       {
         "current_goal_id": 1423,
-        "current_goal_text":
-          "if (get-option coq:locality local) (X119 = tt) (X119 = ff)",
+        "current_goal_text": "if (get-option coq:locality local) (X119 = tt) (X119 = ff)",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -64581,13 +62297,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
+                "rule_text": "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 592
@@ -64721,13 +62435,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -64951,13 +62663,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -64976,8 +62686,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -65002,13 +62711,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -65023,8 +62730,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -65149,13 +62855,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
+                "rule_text": "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 592
@@ -65289,13 +62993,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -65519,13 +63221,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -65544,8 +63244,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -65570,13 +63269,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -65591,8 +63288,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -65627,8 +63323,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "if (get-option coq:locality local) (X119 = tt) (X119 = ff)",
+              "goal_text": "if (get-option coq:locality local) (X119 = tt) (X119 = ff)",
               "goal_id": 1423
             },
             "cut_branch": {
@@ -65737,13 +63432,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
+                "rule_text": "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 592
@@ -65877,13 +63570,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -66107,13 +63798,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -66132,8 +63821,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -66158,13 +63846,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -66179,8 +63865,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -66218,8 +63903,7 @@
       "Inference",
       {
         "current_goal_id": 1425,
-        "current_goal_text":
-          "std.do!\n [(coq.gref->id (const «HB_unnamed_factory_27») X120 ,\n    log.private.log-vernac (log.private.coq.vernac.implicit tt X120 [[]]))]",
+        "current_goal_text": "std.do!\n [(coq.gref->id (const «HB_unnamed_factory_27») X120 ,\n    log.private.log-vernac (log.private.coq.vernac.implicit tt X120 [[]]))]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -66228,8 +63912,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -66251,8 +63934,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.gref->id (const «HB_unnamed_factory_27») X120 ,\n log.private.log-vernac (log.private.coq.vernac.implicit tt X120 [[]])",
+                "goal_text": "coq.gref->id (const «HB_unnamed_factory_27») X120 ,\n log.private.log-vernac (log.private.coq.vernac.implicit tt X120 [[]])",
                 "goal_id": 1429
               },
               { "goal_text": "!", "goal_id": 1430 },
@@ -66324,13 +64006,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
+                "rule_text": "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 592
@@ -66464,13 +64144,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -66694,13 +64372,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -66719,8 +64395,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -66745,13 +64420,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -66766,8 +64439,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -66799,8 +64471,7 @@
       "Inference",
       {
         "current_goal_id": 1429,
-        "current_goal_text":
-          "coq.gref->id (const «HB_unnamed_factory_27») X120 ,\n log.private.log-vernac (log.private.coq.vernac.implicit tt X120 [[]])",
+        "current_goal_text": "coq.gref->id (const «HB_unnamed_factory_27») X120 ,\n log.private.log-vernac (log.private.coq.vernac.implicit tt X120 [[]])",
         "current_goal_predicate": ",",
         "failed_attempts": [],
         "successful_attempts": [
@@ -66811,13 +64482,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.gref->id (const «HB_unnamed_factory_27») X120",
+                "goal_text": "coq.gref->id (const «HB_unnamed_factory_27») X120",
                 "goal_id": 1432
               },
               {
-                "goal_text":
-                  "log.private.log-vernac (log.private.coq.vernac.implicit tt X120 [[]])",
+                "goal_text": "log.private.log-vernac (log.private.coq.vernac.implicit tt X120 [[]])",
                 "goal_id": 1433
               }
             ],
@@ -66892,13 +64561,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
+                "rule_text": "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 592
@@ -67032,13 +64699,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -67262,13 +64927,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -67287,8 +64950,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -67313,13 +64975,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -67334,8 +64994,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -67367,8 +65026,7 @@
       "Inference",
       {
         "current_goal_id": 1432,
-        "current_goal_text":
-          "coq.gref->id (const «HB_unnamed_factory_27») X120",
+        "current_goal_text": "coq.gref->id (const «HB_unnamed_factory_27») X120",
         "current_goal_predicate": "coq.gref->id",
         "failed_attempts": [],
         "successful_attempts": [
@@ -67459,13 +65117,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
+                "rule_text": "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 592
@@ -67599,13 +65255,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -67829,13 +65483,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -67854,8 +65506,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -67880,13 +65531,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -67901,8 +65550,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -68025,13 +65673,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
+                "rule_text": "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 592
@@ -68165,13 +65811,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -68395,13 +66039,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -68420,8 +66062,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -68446,13 +66087,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -68467,8 +66106,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -68500,8 +66138,7 @@
       "Inference",
       {
         "current_goal_id": 1433,
-        "current_goal_text":
-          "log.private.log-vernac\n (log.private.coq.vernac.implicit tt HB_unnamed_factory_27 [[]])",
+        "current_goal_text": "log.private.log-vernac\n (log.private.coq.vernac.implicit tt HB_unnamed_factory_27 [[]])",
         "current_goal_predicate": "log.private.log-vernac",
         "failed_attempts": [],
         "successful_attempts": [
@@ -68510,13 +66147,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(log.private.log-vernac A0) :- (log.private.logger A1 A2), (!), \n (if (A2 = tt) (A3 = []) (A3 = [get-option coq:pp all])), \n (A3 => log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-extend A1 A4).",
+                  "rule_text": "(log.private.log-vernac A0) :- (log.private.logger A1 A2), (!), \n (if (A2 = tt) (A3 = []) (A3 = [get-option coq:pp all])), \n (A3 => log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-extend A1 A4).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                       "line": 291,
                       "column": 0,
                       "character": 11441
@@ -68538,13 +66173,11 @@
               },
               { "goal_text": "!", "goal_id": 1436 },
               {
-                "goal_text":
-                  "if (X122 = tt) (X123 = []) (X123 = [get-option coq:pp all])",
+                "goal_text": "if (X122 = tt) (X123 = []) (X123 = [get-option coq:pp all])",
                 "goal_id": 1437
               },
               {
-                "goal_text":
-                  "X123 =>\n log.private.coq.vernac->pp\n  [log.private.coq.vernac.implicit tt HB_unnamed_factory_27 [[]]] X124",
+                "goal_text": "X123 =>\n log.private.coq.vernac->pp\n  [log.private.coq.vernac.implicit tt HB_unnamed_factory_27 [[]]] X124",
                 "goal_id": 1438
               },
               {
@@ -68561,13 +66194,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.private.log-vernac A0) :- (log.private.logger A1 A2), (!), \n (if (A2 = tt) (A3 = []) (A3 = [get-option coq:pp all])), \n (A3 => log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-extend A1 A4).",
+                "rule_text": "(log.private.log-vernac A0) :- (log.private.logger A1 A2), (!), \n (if (A2 = tt) (A3 = []) (A3 = [get-option coq:pp all])), \n (A3 => log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-extend A1 A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 291,
                     "column": 0,
                     "character": 11441
@@ -68644,13 +66275,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
+                "rule_text": "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 592
@@ -68784,13 +66413,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -69014,13 +66641,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -69039,8 +66664,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -69065,13 +66689,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -69086,8 +66708,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -69129,13 +66750,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.private.log-vernac A0) :- (log.private.logger A1 A2), (!), \n (if (A2 = tt) (A3 = []) (A3 = [get-option coq:pp all])), \n (A3 => log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-extend A1 A4).",
+                "rule_text": "(log.private.log-vernac A0) :- (log.private.logger A1 A2), (!), \n (if (A2 = tt) (A3 = []) (A3 = [get-option coq:pp all])), \n (A3 => log.private.coq.vernac->pp [A0] A4), \n (log.private.logger-extend A1 A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 291,
                     "column": 0,
                     "character": 11441
@@ -69212,13 +66831,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
+                "rule_text": "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 592
@@ -69352,13 +66969,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -69582,13 +67197,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -69607,8 +67220,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -69633,13 +67245,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -69654,8 +67264,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -69687,8 +67296,7 @@
       "Inference",
       {
         "current_goal_id": 1433,
-        "current_goal_text":
-          "log.private.log-vernac\n (log.private.coq.vernac.implicit tt HB_unnamed_factory_27 [[]])",
+        "current_goal_text": "log.private.log-vernac\n (log.private.coq.vernac.implicit tt HB_unnamed_factory_27 [[]])",
         "current_goal_predicate": "log.private.log-vernac",
         "failed_attempts": [],
         "successful_attempts": [
@@ -69701,8 +67309,7 @@
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                       "line": 294,
                       "column": 0,
                       "character": 11623
@@ -69726,8 +67333,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 294,
                     "column": 0,
                     "character": 11623
@@ -69804,13 +67410,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
+                "rule_text": "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 592
@@ -69944,13 +67548,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -70174,13 +67776,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -70199,8 +67799,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -70225,13 +67824,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -70246,8 +67843,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -70394,13 +67990,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
+                "rule_text": "(log.coq.arguments.set-implicit A0 A1) :- (std.do!\n                                            [coq.arguments.set-implicit A0 A1, \n                                             if\n                                              (get-option coq:locality local) \n                                              (A2 = tt) (A2 = ff), \n                                             (coq.gref->id A0 A3 ,\n                                               log.private.log-vernac\n                                                (log.private.coq.vernac.implicit\n                                                  A2 A3 A1))]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 592
@@ -70534,13 +68128,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -70764,13 +68356,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -70789,8 +68379,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -70815,13 +68404,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -70836,8 +68423,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -71041,13 +68627,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
+                "rule_text": "(log.coq.env.add-const-noimplicits-failondup A0 A1 A2 A3 A4) :- (std.do!\n                                                                  [if\n                                                                    (\n                                                                    not\n                                                                    (ground_term\n                                                                    A2 ;\n                                                                    ground_term\n                                                                    A1)) \n                                                                    (\n                                                                    ,\n                                                                    (coq.term->string\n                                                                    A2 A6) \n                                                                    (coq.term->string\n                                                                    A1 A7) \n                                                                    (coq.error\n                                                                    HB: cannot infer some information in \n                                                                    A0 : A6 \n                                                                    := A7)) \n                                                                    true, \n                                                                   coq.env.add-const\n                                                                    A0 A1 A2 \n                                                                    A3 A4, \n                                                                   log.coq.env.add-location\n                                                                    (\n                                                                    const A4), \n                                                                   if\n                                                                    (\n                                                                    var A2) \n                                                                    (\n                                                                    A5 = none) \n                                                                    (\n                                                                    A5 =\n                                                                    some A2), \n                                                                   log.private.log-vernac\n                                                                    (\n                                                                    log.private.coq.vernac.definition\n                                                                    A0 A5 A1), \n                                                                   get-option\n                                                                    coq:locality \n                                                                    local =>\n                                                                    log.coq.arguments.set-implicit\n                                                                    (const A4) \n                                                                    [[]]]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 59,
                     "column": 0,
                     "character": 2355
@@ -71271,13 +68855,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -71296,8 +68878,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -71322,13 +68903,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -71343,8 +68922,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -71382,8 +68960,7 @@
       "Inference",
       {
         "current_goal_id": 1375,
-        "current_goal_text":
-          "std.do!\n [X87 = global (const «HB_unnamed_factory_27»), \n  std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [X87 = global (const «HB_unnamed_factory_27»), \n  std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -71392,8 +68969,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -71423,8 +68999,7 @@
               },
               { "goal_text": "!", "goal_id": 1441 },
               {
-                "goal_text":
-                  "std.do!\n [std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 X87 X89 \n   X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
                 "goal_id": 1442
               }
             ],
@@ -71665,13 +69240,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -71690,8 +69263,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -71716,13 +69288,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -71737,8 +69307,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -72026,13 +69595,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -72051,8 +69618,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -72077,13 +69643,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -72098,8 +69662,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -72137,8 +69700,7 @@
       "Inference",
       {
         "current_goal_id": 1442,
-        "current_goal_text":
-          "std.do!\n [std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 \n   (global (const «HB_unnamed_factory_27»)) X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [std.drop 0 [global (indt «nat»)] [X88 | _], \n  instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 \n   (global (const «HB_unnamed_factory_27»)) X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -72147,8 +69709,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -72178,8 +69739,7 @@
               },
               { "goal_text": "!", "goal_id": 1444 },
               {
-                "goal_text":
-                  "std.do!\n [instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 \n   (global (const «HB_unnamed_factory_27»)) X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [instance.private.check-non-forgetful-inheritance X88 \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») X88 \n   (global (const «HB_unnamed_factory_27»)) X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
                 "goal_id": 1445
               }
             ],
@@ -72439,13 +69999,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -72464,8 +70022,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -72490,13 +70047,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -72511,8 +70066,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -72846,13 +70400,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -72871,8 +70423,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -72897,13 +70448,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -72918,8 +70467,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -72958,8 +70506,7 @@
               "goal_id": 1443
             },
             "cut_branch": {
-              "rule_text":
-                "(std.drop A0 [_ | A1] A2) :- (!), (A3 is A0 - 1), (std.drop A3 A1 A2).",
+              "rule_text": "(std.drop A0 [_ | A1] A2) :- (!), (A3 is A0 - 1), (std.drop A3 A1 A2).",
               "rule_loc": [
                 "File",
                 {
@@ -72977,8 +70524,7 @@
               "goal_id": 1443
             },
             "cut_branch": {
-              "rule_text":
-                "(std.drop _ _ _) :- (std.fatal-error drop run out of list items).",
+              "rule_text": "(std.drop _ _ _) :- (std.fatal-error drop run out of list items).",
               "rule_loc": [
                 "File",
                 {
@@ -73008,8 +70554,7 @@
       "Inference",
       {
         "current_goal_id": 1445,
-        "current_goal_text":
-          "std.do!\n [instance.private.check-non-forgetful-inheritance (global (indt «nat»)) \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») \n   (global (indt «nat»)) (global (const «HB_unnamed_factory_27»)) X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [instance.private.check-non-forgetful-inheritance (global (indt «nat»)) \n   (indt «IsSelfA'.axioms_»), \n  instance.private.declare-instance (indt «IsSelfA'.axioms_») \n   (global (indt «nat»)) (global (const «HB_unnamed_factory_27»)) X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -73018,8 +70563,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -73044,14 +70588,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "instance.private.check-non-forgetful-inheritance (global (indt «nat»)) \n (indt «IsSelfA'.axioms_»)",
+                "goal_text": "instance.private.check-non-forgetful-inheritance (global (indt «nat»)) \n (indt «IsSelfA'.axioms_»)",
                 "goal_id": 1447
               },
               { "goal_text": "!", "goal_id": 1448 },
               {
-                "goal_text":
-                  "std.do!\n [instance.private.declare-instance (indt «IsSelfA'.axioms_») \n   (global (indt «nat»)) (global (const «HB_unnamed_factory_27»)) X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [instance.private.declare-instance (indt «IsSelfA'.axioms_») \n   (global (indt «nat»)) (global (const «HB_unnamed_factory_27»)) X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
                 "goal_id": 1449
               }
             ],
@@ -73330,13 +70872,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -73355,8 +70895,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -73381,13 +70920,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -73402,8 +70939,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -73435,10 +70971,8 @@
       "Inference",
       {
         "current_goal_id": 1447,
-        "current_goal_text":
-          "instance.private.check-non-forgetful-inheritance (global (indt «nat»)) \n (indt «IsSelfA'.axioms_»)",
-        "current_goal_predicate":
-          "instance.private.check-non-forgetful-inheritance",
+        "current_goal_text": "instance.private.check-non-forgetful-inheritance (global (indt «nat»)) \n (indt «IsSelfA'.axioms_»)",
+        "current_goal_predicate": "instance.private.check-non-forgetful-inheritance",
         "failed_attempts": [],
         "successful_attempts": [
           {
@@ -73446,13 +70980,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(instance.private.check-non-forgetful-inheritance _ _) :- (get-option\n                                                            non_forgetful_inheritance \n                                                            tt), (!).",
+                  "rule_text": "(instance.private.check-non-forgetful-inheritance _ _) :- (get-option\n                                                            non_forgetful_inheritance \n                                                            tt), (!).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                       "line": 341,
                       "column": 0,
                       "character": 14872
@@ -73478,13 +71010,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.check-non-forgetful-inheritance _ _) :- (get-option\n                                                            non_forgetful_inheritance \n                                                            tt), (!).",
+                "rule_text": "(instance.private.check-non-forgetful-inheritance _ _) :- (get-option\n                                                            non_forgetful_inheritance \n                                                            tt), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 341,
                     "column": 0,
                     "character": 14872
@@ -73765,13 +71295,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -73790,8 +71318,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -73816,13 +71343,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -73837,8 +71362,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -73880,13 +71404,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.check-non-forgetful-inheritance _ _) :- (get-option\n                                                            non_forgetful_inheritance \n                                                            tt), (!).",
+                "rule_text": "(instance.private.check-non-forgetful-inheritance _ _) :- (get-option\n                                                            non_forgetful_inheritance \n                                                            tt), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 341,
                     "column": 0,
                     "character": 14872
@@ -74167,13 +71689,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -74192,8 +71712,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -74218,13 +71737,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -74239,8 +71756,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -74272,10 +71788,8 @@
       "Inference",
       {
         "current_goal_id": 1447,
-        "current_goal_text":
-          "instance.private.check-non-forgetful-inheritance (global (indt «nat»)) \n (indt «IsSelfA'.axioms_»)",
-        "current_goal_predicate":
-          "instance.private.check-non-forgetful-inheritance",
+        "current_goal_text": "instance.private.check-non-forgetful-inheritance (global (indt «nat»)) \n (indt «IsSelfA'.axioms_»)",
+        "current_goal_predicate": "instance.private.check-non-forgetful-inheritance",
         "failed_attempts": [],
         "successful_attempts": [
           {
@@ -74283,13 +71797,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
+                  "rule_text": "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                       "line": 343,
                       "column": 0,
                       "character": 14959
@@ -74304,8 +71816,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.do!\n [if\n   (coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _ ,\n     structure-key X125 _ X126) \n   (, (nice-gref->string (indt «IsSelfA'.axioms_») X127) \n     (nice-gref->string X126 X128 , calc (X128 ^ .) X129) \n     (coq.warning HB HB.non-forgetful-inheritance \n       non forgetful inheritance detected.\n You have two solutions: \n       1. (Best practice) Reorganize your hierarchy to make X127 depend on \n       X129 See the paper \"Competing inheritance paths in \n       dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n       explanations \n       2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n       We strongly advise you encapsulate this instance inside a module, \n       in order to isolate it from the rest of the code, and to be able \n       to import it on demand. See the above paper and the file \n       https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n       to witness devastating effects.)) true]",
+                "goal_text": "std.do!\n [if\n   (coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _ ,\n     structure-key X125 _ X126) \n   (, (nice-gref->string (indt «IsSelfA'.axioms_») X127) \n     (nice-gref->string X126 X128 , calc (X128 ^ .) X129) \n     (coq.warning HB HB.non-forgetful-inheritance \n       non forgetful inheritance detected.\n You have two solutions: \n       1. (Best practice) Reorganize your hierarchy to make X127 depend on \n       X129 See the paper \"Competing inheritance paths in \n       dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n       explanations \n       2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n       We strongly advise you encapsulate this instance inside a module, \n       in order to isolate it from the rest of the code, and to be able \n       to import it on demand. See the above paper and the file \n       https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n       to witness devastating effects.)) true]",
                 "goal_id": 1452
               }
             ],
@@ -74318,13 +71829,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
+                "rule_text": "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 343,
                     "column": 0,
                     "character": 14959
@@ -74605,13 +72114,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -74630,8 +72137,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -74656,13 +72162,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -74677,8 +72181,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -74710,8 +72213,7 @@
       "Inference",
       {
         "current_goal_id": 1452,
-        "current_goal_text":
-          "std.do!\n [if\n   (coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _ ,\n     structure-key X125 _ X126) \n   (, (nice-gref->string (indt «IsSelfA'.axioms_») X127) \n     (nice-gref->string X126 X128 , calc (X128 ^ .) X129) \n     (coq.warning HB HB.non-forgetful-inheritance \n       non forgetful inheritance detected.\n You have two solutions: \n       1. (Best practice) Reorganize your hierarchy to make X127 depend on \n       X129 See the paper \"Competing inheritance paths in \n       dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n       explanations \n       2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n       We strongly advise you encapsulate this instance inside a module, \n       in order to isolate it from the rest of the code, and to be able \n       to import it on demand. See the above paper and the file \n       https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n       to witness devastating effects.)) true]",
+        "current_goal_text": "std.do!\n [if\n   (coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _ ,\n     structure-key X125 _ X126) \n   (, (nice-gref->string (indt «IsSelfA'.axioms_») X127) \n     (nice-gref->string X126 X128 , calc (X128 ^ .) X129) \n     (coq.warning HB HB.non-forgetful-inheritance \n       non forgetful inheritance detected.\n You have two solutions: \n       1. (Best practice) Reorganize your hierarchy to make X127 depend on \n       X129 See the paper \"Competing inheritance paths in \n       dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n       explanations \n       2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n       We strongly advise you encapsulate this instance inside a module, \n       in order to isolate it from the rest of the code, and to be able \n       to import it on demand. See the above paper and the file \n       https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n       to witness devastating effects.)) true]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -74720,8 +72222,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -74743,8 +72244,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if\n (coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _ ,\n   structure-key X125 _ X126) \n (, (nice-gref->string (indt «IsSelfA'.axioms_») X127) \n   (nice-gref->string X126 X128 , calc (X128 ^ .) X129) \n   (coq.warning HB HB.non-forgetful-inheritance \n     non forgetful inheritance detected.\n You have two solutions: \n     1. (Best practice) Reorganize your hierarchy to make X127 depend on \n     X129 See the paper \"Competing inheritance paths in \n     dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n     explanations \n     2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n     We strongly advise you encapsulate this instance inside a module, \n     in order to isolate it from the rest of the code, and to be able \n     to import it on demand. See the above paper and the file \n     https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n     to witness devastating effects.)) true",
+                "goal_text": "if\n (coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _ ,\n   structure-key X125 _ X126) \n (, (nice-gref->string (indt «IsSelfA'.axioms_») X127) \n   (nice-gref->string X126 X128 , calc (X128 ^ .) X129) \n   (coq.warning HB HB.non-forgetful-inheritance \n     non forgetful inheritance detected.\n You have two solutions: \n     1. (Best practice) Reorganize your hierarchy to make X127 depend on \n     X129 See the paper \"Competing inheritance paths in \n     dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n     explanations \n     2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n     We strongly advise you encapsulate this instance inside a module, \n     in order to isolate it from the rest of the code, and to be able \n     to import it on demand. See the above paper and the file \n     https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n     to witness devastating effects.)) true",
                 "goal_id": 1453
               },
               { "goal_text": "!", "goal_id": 1454 },
@@ -74778,13 +72278,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
+                "rule_text": "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 343,
                     "column": 0,
                     "character": 14959
@@ -75065,13 +72563,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -75090,8 +72586,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -75116,13 +72611,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -75137,8 +72630,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -75170,8 +72662,7 @@
       "Inference",
       {
         "current_goal_id": 1453,
-        "current_goal_text":
-          "if\n (coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _ ,\n   structure-key X125 _ X126) \n (, (nice-gref->string (indt «IsSelfA'.axioms_») X127) \n   (nice-gref->string X126 X128 , calc (X128 ^ .) X129) \n   (coq.warning HB HB.non-forgetful-inheritance \n     non forgetful inheritance detected.\n You have two solutions: \n     1. (Best practice) Reorganize your hierarchy to make X127 depend on \n     X129 See the paper \"Competing inheritance paths in \n     dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n     explanations \n     2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n     We strongly advise you encapsulate this instance inside a module, \n     in order to isolate it from the rest of the code, and to be able \n     to import it on demand. See the above paper and the file \n     https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n     to witness devastating effects.)) true",
+        "current_goal_text": "if\n (coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _ ,\n   structure-key X125 _ X126) \n (, (nice-gref->string (indt «IsSelfA'.axioms_») X127) \n   (nice-gref->string X126 X128 , calc (X128 ^ .) X129) \n   (coq.warning HB HB.non-forgetful-inheritance \n     non forgetful inheritance detected.\n You have two solutions: \n     1. (Best practice) Reorganize your hierarchy to make X127 depend on \n     X129 See the paper \"Competing inheritance paths in \n     dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n     explanations \n     2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n     We strongly advise you encapsulate this instance inside a module, \n     in order to isolate it from the rest of the code, and to be able \n     to import it on demand. See the above paper and the file \n     https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n     to witness devastating effects.)) true",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -75205,14 +72696,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _ ,\n structure-key X125 _ X126",
+                "goal_text": "coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _ ,\n structure-key X125 _ X126",
                 "goal_id": 1456
               },
               { "goal_text": "!", "goal_id": 1457 },
               {
-                "goal_text":
-                  ", (nice-gref->string (indt «IsSelfA'.axioms_») X127) \n (nice-gref->string X126 X128 , calc (X128 ^ .) X129) \n (coq.warning HB HB.non-forgetful-inheritance \n   non forgetful inheritance detected.\n You have two solutions: \n   1. (Best practice) Reorganize your hierarchy to make X127 depend on X129 \n   See the paper \"Competing inheritance paths in \n   dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n   explanations \n   2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n   We strongly advise you encapsulate this instance inside a module, \n   in order to isolate it from the rest of the code, and to be able \n   to import it on demand. See the above paper and the file \n   https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n   to witness devastating effects.)",
+                "goal_text": ", (nice-gref->string (indt «IsSelfA'.axioms_») X127) \n (nice-gref->string X126 X128 , calc (X128 ^ .) X129) \n (coq.warning HB HB.non-forgetful-inheritance \n   non forgetful inheritance detected.\n You have two solutions: \n   1. (Best practice) Reorganize your hierarchy to make X127 depend on X129 \n   See the paper \"Competing inheritance paths in \n   dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n   explanations \n   2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n   We strongly advise you encapsulate this instance inside a module, \n   in order to isolate it from the rest of the code, and to be able \n   to import it on demand. See the above paper and the file \n   https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n   to witness devastating effects.)",
                 "goal_id": 1458
               }
             ],
@@ -75263,13 +72752,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
+                "rule_text": "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 343,
                     "column": 0,
                     "character": 14959
@@ -75550,13 +73037,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -75575,8 +73060,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -75601,13 +73085,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -75622,8 +73104,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -75655,8 +73136,7 @@
       "Inference",
       {
         "current_goal_id": 1456,
-        "current_goal_text":
-          "coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _ ,\n structure-key X125 _ X126",
+        "current_goal_text": "coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _ ,\n structure-key X125 _ X126",
         "current_goal_predicate": ",",
         "failed_attempts": [],
         "successful_attempts": [
@@ -75667,8 +73147,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _",
+                "goal_text": "coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _",
                 "goal_id": 1459
               },
               { "goal_text": "structure-key X125 _ X126", "goal_id": 1460 }
@@ -75725,13 +73204,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
+                "rule_text": "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 343,
                     "column": 0,
                     "character": 14959
@@ -76012,13 +73489,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -76037,8 +73512,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -76063,13 +73537,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -76084,8 +73556,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -76117,8 +73588,7 @@
       "Inference",
       {
         "current_goal_id": 1459,
-        "current_goal_text":
-          "coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _",
+        "current_goal_text": "coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _",
         "current_goal_predicate": "coq.safe-dest-app",
         "failed_attempts": [
           {
@@ -76215,13 +73685,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
+                "rule_text": "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 343,
                     "column": 0,
                     "character": 14959
@@ -76502,13 +73970,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -76527,8 +73993,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -76553,13 +74018,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -76574,8 +74037,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -76607,8 +74069,7 @@
       "Inference",
       {
         "current_goal_id": 1453,
-        "current_goal_text":
-          "if\n (coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _ ,\n   structure-key X125 _ X126) \n (, (nice-gref->string (indt «IsSelfA'.axioms_») X127) \n   (nice-gref->string X126 X128 , calc (X128 ^ .) X129) \n   (coq.warning HB HB.non-forgetful-inheritance \n     non forgetful inheritance detected.\n You have two solutions: \n     1. (Best practice) Reorganize your hierarchy to make X127 depend on \n     X129 See the paper \"Competing inheritance paths in \n     dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n     explanations \n     2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n     We strongly advise you encapsulate this instance inside a module, \n     in order to isolate it from the rest of the code, and to be able \n     to import it on demand. See the above paper and the file \n     https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n     to witness devastating effects.)) true",
+        "current_goal_text": "if\n (coq.safe-dest-app (global (indt «nat»)) (global (const X125)) _ ,\n   structure-key X125 _ X126) \n (, (nice-gref->string (indt «IsSelfA'.axioms_») X127) \n   (nice-gref->string X126 X128 , calc (X128 ^ .) X129) \n   (coq.warning HB HB.non-forgetful-inheritance \n     non forgetful inheritance detected.\n You have two solutions: \n     1. (Best practice) Reorganize your hierarchy to make X127 depend on \n     X129 See the paper \"Competing inheritance paths in \n     dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n     explanations \n     2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n     We strongly advise you encapsulate this instance inside a module, \n     in order to isolate it from the rest of the code, and to be able \n     to import it on demand. See the above paper and the file \n     https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n     to witness devastating effects.)) true",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -76679,13 +74140,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
+                "rule_text": "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 343,
                     "column": 0,
                     "character": 14959
@@ -76966,13 +74425,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -76991,8 +74448,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -77017,13 +74473,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -77038,8 +74492,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -77161,13 +74614,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
+                "rule_text": "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 343,
                     "column": 0,
                     "character": 14959
@@ -77448,13 +74899,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -77473,8 +74922,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -77499,13 +74947,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -77520,8 +74966,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -77630,13 +75075,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
+                "rule_text": "(instance.private.check-non-forgetful-inheritance A0 A1) :- (std.do!\n                                                              [if\n                                                                (coq.safe-dest-app\n                                                                  A0 \n                                                                  (global\n                                                                    (\n                                                                    const A2)) \n                                                                  _ ,\n                                                                  structure-key\n                                                                   A2 _ A3) \n                                                                (,\n                                                                  (nice-gref->string\n                                                                    A1 A4) \n                                                                  (nice-gref->string\n                                                                    A3 A5 ,\n                                                                    calc\n                                                                    (A5 ^ .) \n                                                                    A6) \n                                                                  (coq.warning\n                                                                    HB \n                                                                    HB.non-forgetful-inheritance \n                                                                    non forgetful inheritance detected.\n \n                                                                    You have two solutions: \n                                                                    1. (Best practice) Reorganize your hierarchy to make \n                                                                    A4 \n                                                                    depend on \n                                                                    A6 \n                                                                    See the paper \"Competing inheritance paths in \n                                                                    dependent type theory\" (https://hal.inria.fr/hal-02463336) for more \n                                                                    explanations \n                                                                    2. Use the attribute #[non_forgetful_inheritance] to disable this check. \n                                                                    We strongly advise you encapsulate this instance inside a module, \n                                                                    in order to isolate it from the rest of the code, and to be able \n                                                                    to import it on demand. See the above paper and the file \n                                                                    https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v \n                                                                    to witness devastating effects.)) \n                                                                true]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 343,
                     "column": 0,
                     "character": 14959
@@ -77917,13 +75360,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -77942,8 +75383,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -77968,13 +75408,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -77989,8 +75427,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -78028,8 +75465,7 @@
       "Inference",
       {
         "current_goal_id": 1449,
-        "current_goal_text":
-          "std.do!\n [instance.private.declare-instance (indt «IsSelfA'.axioms_») \n   (global (indt «nat»)) (global (const «HB_unnamed_factory_27»)) X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+        "current_goal_text": "std.do!\n [instance.private.declare-instance (indt «IsSelfA'.axioms_») \n   (global (indt «nat»)) (global (const «HB_unnamed_factory_27»)) X89 X90, \n  if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -78038,8 +75474,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -78064,14 +75499,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "instance.private.declare-instance (indt «IsSelfA'.axioms_») \n (global (indt «nat»)) (global (const «HB_unnamed_factory_27»)) X89 X90",
+                "goal_text": "instance.private.declare-instance (indt «IsSelfA'.axioms_») \n (global (indt «nat»)) (global (const «HB_unnamed_factory_27»)) X89 X90",
                 "goal_id": 1462
               },
               { "goal_text": "!", "goal_id": 1463 },
               {
-                "goal_text":
-                  "std.do!\n [if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
+                "goal_text": "std.do!\n [if\n   (arity (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) =\n     arity _) true \n   (if-verbose (header X91 , coq.say X91 closing instance section) ,\n     log.coq.env.end-section-name X76), acc-clauses current X89]",
                 "goal_id": 1464
               }
             ],
@@ -78369,13 +75802,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -78394,8 +75825,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -78420,13 +75850,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -78441,8 +75869,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -78474,8 +75901,7 @@
       "Inference",
       {
         "current_goal_id": 1462,
-        "current_goal_text":
-          "instance.private.declare-instance (indt «IsSelfA'.axioms_») \n (global (indt «nat»)) (global (const «HB_unnamed_factory_27»)) X89 X90",
+        "current_goal_text": "instance.private.declare-instance (indt «IsSelfA'.axioms_») \n (global (indt «nat»)) (global (const «HB_unnamed_factory_27»)) X89 X90",
         "current_goal_predicate": "instance.private.declare-instance",
         "failed_attempts": [],
         "successful_attempts": [
@@ -78484,13 +75910,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (current-mode\n                                                        (builder-from A1 A5 \n                                                          A6 _)), (!), \n (if (get-option local tt) \n   (coq.error\n     HB: declare-instance: cannot make builders local.\n    If you want temporary instances, make an alias, e.g. with let T' := T) \n   true), (!), \n (instance.private.declare-canonical-instances-from-factory-and-local-builders\n   A0 A1 A2 A5 A6 A3 A4).",
+                  "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (current-mode\n                                                        (builder-from A1 A5 \n                                                          A6 _)), (!), \n (if (get-option local tt) \n   (coq.error\n     HB: declare-instance: cannot make builders local.\n    If you want temporary instances, make an alias, e.g. with let T' := T) \n   true), (!), \n (instance.private.declare-canonical-instances-from-factory-and-local-builders\n   A0 A1 A2 A5 A6 A3 A4).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                       "line": 188,
                       "column": 0,
                       "character": 8025
@@ -78510,20 +75934,17 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "current-mode (builder-from (global (indt «nat»)) X130 X131 _)",
+                "goal_text": "current-mode (builder-from (global (indt «nat»)) X130 X131 _)",
                 "goal_id": 1465
               },
               { "goal_text": "!", "goal_id": 1466 },
               {
-                "goal_text":
-                  "if (get-option local tt) \n (coq.error\n   HB: declare-instance: cannot make builders local.\n    If you want temporary instances, make an alias, e.g. with let T' := T) \n true",
+                "goal_text": "if (get-option local tt) \n (coq.error\n   HB: declare-instance: cannot make builders local.\n    If you want temporary instances, make an alias, e.g. with let T' := T) \n true",
                 "goal_id": 1467
               },
               { "goal_text": "!", "goal_id": 1468 },
               {
-                "goal_text":
-                  "instance.private.declare-canonical-instances-from-factory-and-local-builders\n (indt «IsSelfA'.axioms_») (global (indt «nat»)) \n (global (const «HB_unnamed_factory_27»)) X130 X131 X89 X90",
+                "goal_text": "instance.private.declare-canonical-instances-from-factory-and-local-builders\n (indt «IsSelfA'.axioms_») (global (indt «nat»)) \n (global (const «HB_unnamed_factory_27»)) X130 X131 X89 X90",
                 "goal_id": 1469
               }
             ],
@@ -78536,13 +75957,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (current-mode\n                                                        (builder-from A1 A5 \n                                                          A6 _)), (!), \n (if (get-option local tt) \n   (coq.error\n     HB: declare-instance: cannot make builders local.\n    If you want temporary instances, make an alias, e.g. with let T' := T) \n   true), (!), \n (instance.private.declare-canonical-instances-from-factory-and-local-builders\n   A0 A1 A2 A5 A6 A3 A4).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (current-mode\n                                                        (builder-from A1 A5 \n                                                          A6 _)), (!), \n (if (get-option local tt) \n   (coq.error\n     HB: declare-instance: cannot make builders local.\n    If you want temporary instances, make an alias, e.g. with let T' := T) \n   true), (!), \n (instance.private.declare-canonical-instances-from-factory-and-local-builders\n   A0 A1 A2 A5 A6 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 188,
                     "column": 0,
                     "character": 8025
@@ -78842,13 +76261,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -78867,8 +76284,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -78893,13 +76309,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -78914,8 +76328,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -78947,8 +76360,7 @@
       "Inference",
       {
         "current_goal_id": 1465,
-        "current_goal_text":
-          "current-mode (builder-from (global (indt «nat»)) X130 X131 _)",
+        "current_goal_text": "current-mode (builder-from (global (indt «nat»)) X130 X131 _)",
         "current_goal_predicate": "current-mode",
         "failed_attempts": [],
         "successful_attempts": [],
@@ -78958,13 +76370,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (current-mode\n                                                        (builder-from A1 A5 \n                                                          A6 _)), (!), \n (if (get-option local tt) \n   (coq.error\n     HB: declare-instance: cannot make builders local.\n    If you want temporary instances, make an alias, e.g. with let T' := T) \n   true), (!), \n (instance.private.declare-canonical-instances-from-factory-and-local-builders\n   A0 A1 A2 A5 A6 A3 A4).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (current-mode\n                                                        (builder-from A1 A5 \n                                                          A6 _)), (!), \n (if (get-option local tt) \n   (coq.error\n     HB: declare-instance: cannot make builders local.\n    If you want temporary instances, make an alias, e.g. with let T' := T) \n   true), (!), \n (instance.private.declare-canonical-instances-from-factory-and-local-builders\n   A0 A1 A2 A5 A6 A3 A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 188,
                     "column": 0,
                     "character": 8025
@@ -79264,13 +76674,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -79289,8 +76697,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -79315,13 +76722,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -79336,8 +76741,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -79369,8 +76773,7 @@
       "Inference",
       {
         "current_goal_id": 1462,
-        "current_goal_text":
-          "instance.private.declare-instance (indt «IsSelfA'.axioms_») \n (global (indt «nat»)) (global (const «HB_unnamed_factory_27»)) X89 X90",
+        "current_goal_text": "instance.private.declare-instance (indt «IsSelfA'.axioms_») \n (global (indt «nat»)) (global (const «HB_unnamed_factory_27»)) X89 X90",
         "current_goal_predicate": "instance.private.declare-instance",
         "failed_attempts": [],
         "successful_attempts": [
@@ -79379,13 +76782,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                  "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                       "line": 196,
                       "column": 0,
                       "character": 8410
@@ -79405,13 +76806,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "instance.private.declare-canonical-instances-from-factory\n (indt «IsSelfA'.axioms_») (global (indt «nat»)) \n (global (const «HB_unnamed_factory_27»)) X90",
+                "goal_text": "instance.private.declare-canonical-instances-from-factory\n (indt «IsSelfA'.axioms_») (global (indt «nat»)) \n (global (const «HB_unnamed_factory_27»)) X90",
                 "goal_id": 1470
               },
               {
-                "goal_text":
-                  "if (get-option export tt) \n (coq.env.current-library X132 ,\n   std.map X90 (c0 \\ c1 \\\n    sigma c2 \\ sigma c3 \\ c0 = pr c2 c3 , c1 = instance-to-export X132 c2 c3) \n    X89) (X89 = [])",
+                "goal_text": "if (get-option export tt) \n (coq.env.current-library X132 ,\n   std.map X90 (c0 \\ c1 \\\n    sigma c2 \\ sigma c3 \\ c0 = pr c2 c3 , c1 = instance-to-export X132 c2 c3) \n    X89) (X89 = [])",
                 "goal_id": 1471
               }
             ],
@@ -79424,13 +76823,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -79730,13 +77127,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -79755,8 +77150,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -79781,13 +77175,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -79802,8 +77194,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -79835,10 +77226,8 @@
       "Inference",
       {
         "current_goal_id": 1470,
-        "current_goal_text":
-          "instance.private.declare-canonical-instances-from-factory\n (indt «IsSelfA'.axioms_») (global (indt «nat»)) \n (global (const «HB_unnamed_factory_27»)) X90",
-        "current_goal_predicate":
-          "instance.private.declare-canonical-instances-from-factory",
+        "current_goal_text": "instance.private.declare-canonical-instances-from-factory\n (indt «IsSelfA'.axioms_») (global (indt «nat»)) \n (global (const «HB_unnamed_factory_27»)) X90",
+        "current_goal_predicate": "instance.private.declare-canonical-instances-from-factory",
         "failed_attempts": [],
         "successful_attempts": [
           {
@@ -79846,13 +77235,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                  "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                       "line": 282,
                       "column": 0,
                       "character": 12180
@@ -79871,8 +77258,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.do!\n [synthesis.under-mixin-src-from-factory.do! (global (indt «nat»)) \n   (global (const «HB_unnamed_factory_27»)) \n   [synthesis.under-local-canonical-mixins-of.do! (global (indt «nat»)) \n     [(factory-provides (indt «IsSelfA'.axioms_») X133 ,\n        list-w-params_list X133 X134), \n      instance.private.add-all-mixins (global (indt «nat»)) \n       (indt «IsSelfA'.axioms_») X134 tt _ X135, \n      (findall-classes-for X134 X136 ,\n        instance.declare-all (global (indt «nat»)) X136 X137)]], \n  std.append X135 X137 X90]",
+                "goal_text": "std.do!\n [synthesis.under-mixin-src-from-factory.do! (global (indt «nat»)) \n   (global (const «HB_unnamed_factory_27»)) \n   [synthesis.under-local-canonical-mixins-of.do! (global (indt «nat»)) \n     [(factory-provides (indt «IsSelfA'.axioms_») X133 ,\n        list-w-params_list X133 X134), \n      instance.private.add-all-mixins (global (indt «nat»)) \n       (indt «IsSelfA'.axioms_») X134 tt _ X135, \n      (findall-classes-for X134 X136 ,\n        instance.declare-all (global (indt «nat»)) X136 X137)]], \n  std.append X135 X137 X90]",
                 "goal_id": 1472
               }
             ],
@@ -79885,13 +77271,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -79906,13 +77290,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -80212,13 +77594,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -80237,8 +77617,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -80263,13 +77642,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -80284,8 +77661,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -80317,8 +77693,7 @@
       "Inference",
       {
         "current_goal_id": 1472,
-        "current_goal_text":
-          "std.do!\n [synthesis.under-mixin-src-from-factory.do! (global (indt «nat»)) \n   (global (const «HB_unnamed_factory_27»)) \n   [synthesis.under-local-canonical-mixins-of.do! (global (indt «nat»)) \n     [(factory-provides (indt «IsSelfA'.axioms_») X133 ,\n        list-w-params_list X133 X134), \n      instance.private.add-all-mixins (global (indt «nat»)) \n       (indt «IsSelfA'.axioms_») X134 tt _ X135, \n      (findall-classes-for X134 X136 ,\n        instance.declare-all (global (indt «nat»)) X136 X137)]], \n  std.append X135 X137 X90]",
+        "current_goal_text": "std.do!\n [synthesis.under-mixin-src-from-factory.do! (global (indt «nat»)) \n   (global (const «HB_unnamed_factory_27»)) \n   [synthesis.under-local-canonical-mixins-of.do! (global (indt «nat»)) \n     [(factory-provides (indt «IsSelfA'.axioms_») X133 ,\n        list-w-params_list X133 X134), \n      instance.private.add-all-mixins (global (indt «nat»)) \n       (indt «IsSelfA'.axioms_») X134 tt _ X135, \n      (findall-classes-for X134 X136 ,\n        instance.declare-all (global (indt «nat»)) X136 X137)]], \n  std.append X135 X137 X90]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -80327,8 +77702,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -80350,8 +77724,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "synthesis.under-mixin-src-from-factory.do! (global (indt «nat»)) \n (global (const «HB_unnamed_factory_27»)) \n [synthesis.under-local-canonical-mixins-of.do! (global (indt «nat»)) \n   [(factory-provides (indt «IsSelfA'.axioms_») X133 ,\n      list-w-params_list X133 X134), \n    instance.private.add-all-mixins (global (indt «nat»)) \n     (indt «IsSelfA'.axioms_») X134 tt _ X135, \n    (findall-classes-for X134 X136 ,\n      instance.declare-all (global (indt «nat»)) X136 X137)]]",
+                "goal_text": "synthesis.under-mixin-src-from-factory.do! (global (indt «nat»)) \n (global (const «HB_unnamed_factory_27»)) \n [synthesis.under-local-canonical-mixins-of.do! (global (indt «nat»)) \n   [(factory-provides (indt «IsSelfA'.axioms_») X133 ,\n      list-w-params_list X133 X134), \n    instance.private.add-all-mixins (global (indt «nat»)) \n     (indt «IsSelfA'.axioms_») X134 tt _ X135, \n    (findall-classes-for X134 X136 ,\n      instance.declare-all (global (indt «nat»)) X136 X137)]]",
                 "goal_id": 1473
               },
               { "goal_text": "!", "goal_id": 1474 },
@@ -80388,13 +77761,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -80409,13 +77780,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -80715,13 +78084,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -80740,8 +78107,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -80766,13 +78132,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -80787,8 +78151,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -80820,10 +78183,8 @@
       "Inference",
       {
         "current_goal_id": 1473,
-        "current_goal_text":
-          "synthesis.under-mixin-src-from-factory.do! (global (indt «nat»)) \n (global (const «HB_unnamed_factory_27»)) \n [synthesis.under-local-canonical-mixins-of.do! (global (indt «nat»)) \n   [(factory-provides (indt «IsSelfA'.axioms_») X133 ,\n      list-w-params_list X133 X134), \n    instance.private.add-all-mixins (global (indt «nat»)) \n     (indt «IsSelfA'.axioms_») X134 tt _ X135, \n    (findall-classes-for X134 X136 ,\n      instance.declare-all (global (indt «nat»)) X136 X137)]]",
-        "current_goal_predicate":
-          "synthesis.under-mixin-src-from-factory.do!",
+        "current_goal_text": "synthesis.under-mixin-src-from-factory.do! (global (indt «nat»)) \n (global (const «HB_unnamed_factory_27»)) \n [synthesis.under-local-canonical-mixins-of.do! (global (indt «nat»)) \n   [(factory-provides (indt «IsSelfA'.axioms_») X133 ,\n      list-w-params_list X133 X134), \n    instance.private.add-all-mixins (global (indt «nat»)) \n     (indt «IsSelfA'.axioms_») X134 tt _ X135, \n    (findall-classes-for X134 X136 ,\n      instance.declare-all (global (indt «nat»)) X136 X137)]]",
+        "current_goal_predicate": "synthesis.under-mixin-src-from-factory.do!",
         "failed_attempts": [],
         "successful_attempts": [
           {
@@ -80831,13 +78192,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                  "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                       "line": 100,
                       "column": 0,
                       "character": 4390
@@ -80858,8 +78217,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.do!\n [synthesis.private.factory-instance->new-mixins [] \n   (global (const «HB_unnamed_factory_27»)) X138, \n  std.map X138 (c0 \\ c1 \\\n   c1 =\n    mixin-src (global (indt «nat»)) c0 \n     (global (const «HB_unnamed_factory_27»))) X139, \n  X139 =>\n   std.do!\n    [synthesis.under-local-canonical-mixins-of.do! (global (indt «nat»)) \n      [(factory-provides (indt «IsSelfA'.axioms_») X133 ,\n         list-w-params_list X133 X134), \n       instance.private.add-all-mixins (global (indt «nat»)) \n        (indt «IsSelfA'.axioms_») X134 tt _ X135, \n       (findall-classes-for X134 X136 ,\n         instance.declare-all (global (indt «nat»)) X136 X137)]]]",
+                "goal_text": "std.do!\n [synthesis.private.factory-instance->new-mixins [] \n   (global (const «HB_unnamed_factory_27»)) X138, \n  std.map X138 (c0 \\ c1 \\\n   c1 =\n    mixin-src (global (indt «nat»)) c0 \n     (global (const «HB_unnamed_factory_27»))) X139, \n  X139 =>\n   std.do!\n    [synthesis.under-local-canonical-mixins-of.do! (global (indt «nat»)) \n      [(factory-provides (indt «IsSelfA'.axioms_») X133 ,\n         list-w-params_list X133 X134), \n       instance.private.add-all-mixins (global (indt «nat»)) \n        (indt «IsSelfA'.axioms_») X134 tt _ X135, \n       (findall-classes-for X134 X136 ,\n         instance.declare-all (global (indt «nat»)) X136 X137)]]]",
                 "goal_id": 1476
               }
             ],
@@ -80872,13 +78230,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -80912,13 +78268,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -80933,13 +78287,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -81239,13 +78591,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -81264,8 +78614,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -81290,13 +78639,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -81311,8 +78658,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -81344,8 +78690,7 @@
       "Inference",
       {
         "current_goal_id": 1476,
-        "current_goal_text":
-          "std.do!\n [synthesis.private.factory-instance->new-mixins [] \n   (global (const «HB_unnamed_factory_27»)) X138, \n  std.map X138 (c0 \\ c1 \\\n   c1 =\n    mixin-src (global (indt «nat»)) c0 \n     (global (const «HB_unnamed_factory_27»))) X139, \n  X139 =>\n   std.do!\n    [synthesis.under-local-canonical-mixins-of.do! (global (indt «nat»)) \n      [(factory-provides (indt «IsSelfA'.axioms_») X133 ,\n         list-w-params_list X133 X134), \n       instance.private.add-all-mixins (global (indt «nat»)) \n        (indt «IsSelfA'.axioms_») X134 tt _ X135, \n       (findall-classes-for X134 X136 ,\n         instance.declare-all (global (indt «nat»)) X136 X137)]]]",
+        "current_goal_text": "std.do!\n [synthesis.private.factory-instance->new-mixins [] \n   (global (const «HB_unnamed_factory_27»)) X138, \n  std.map X138 (c0 \\ c1 \\\n   c1 =\n    mixin-src (global (indt «nat»)) c0 \n     (global (const «HB_unnamed_factory_27»))) X139, \n  X139 =>\n   std.do!\n    [synthesis.under-local-canonical-mixins-of.do! (global (indt «nat»)) \n      [(factory-provides (indt «IsSelfA'.axioms_») X133 ,\n         list-w-params_list X133 X134), \n       instance.private.add-all-mixins (global (indt «nat»)) \n        (indt «IsSelfA'.axioms_») X134 tt _ X135, \n       (findall-classes-for X134 X136 ,\n         instance.declare-all (global (indt «nat»)) X136 X137)]]]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -81354,8 +78699,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -81380,14 +78724,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "synthesis.private.factory-instance->new-mixins [] \n (global (const «HB_unnamed_factory_27»)) X138",
+                "goal_text": "synthesis.private.factory-instance->new-mixins [] \n (global (const «HB_unnamed_factory_27»)) X138",
                 "goal_id": 1477
               },
               { "goal_text": "!", "goal_id": 1478 },
               {
-                "goal_text":
-                  "std.do!\n [std.map X138 (c0 \\ c1 \\\n   c1 =\n    mixin-src (global (indt «nat»)) c0 \n     (global (const «HB_unnamed_factory_27»))) X139, \n  X139 =>\n   std.do!\n    [synthesis.under-local-canonical-mixins-of.do! (global (indt «nat»)) \n      [(factory-provides (indt «IsSelfA'.axioms_») X133 ,\n         list-w-params_list X133 X134), \n       instance.private.add-all-mixins (global (indt «nat»)) \n        (indt «IsSelfA'.axioms_») X134 tt _ X135, \n       (findall-classes-for X134 X136 ,\n         instance.declare-all (global (indt «nat»)) X136 X137)]]]",
+                "goal_text": "std.do!\n [std.map X138 (c0 \\ c1 \\\n   c1 =\n    mixin-src (global (indt «nat»)) c0 \n     (global (const «HB_unnamed_factory_27»))) X139, \n  X139 =>\n   std.do!\n    [synthesis.under-local-canonical-mixins-of.do! (global (indt «nat»)) \n      [(factory-provides (indt «IsSelfA'.axioms_») X133 ,\n         list-w-params_list X133 X134), \n       instance.private.add-all-mixins (global (indt «nat»)) \n        (indt «IsSelfA'.axioms_») X134 tt _ X135, \n       (findall-classes-for X134 X136 ,\n         instance.declare-all (global (indt «nat»)) X136 X137)]]]",
                 "goal_id": 1479
               }
             ],
@@ -81419,13 +78761,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -81459,13 +78799,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -81480,13 +78818,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -81786,13 +79122,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -81811,8 +79145,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -81837,13 +79170,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -81858,8 +79189,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -81891,10 +79221,8 @@
       "Inference",
       {
         "current_goal_id": 1477,
-        "current_goal_text":
-          "synthesis.private.factory-instance->new-mixins [] \n (global (const «HB_unnamed_factory_27»)) X138",
-        "current_goal_predicate":
-          "synthesis.private.factory-instance->new-mixins",
+        "current_goal_text": "synthesis.private.factory-instance->new-mixins [] \n (global (const «HB_unnamed_factory_27»)) X138",
+        "current_goal_predicate": "synthesis.private.factory-instance->new-mixins",
         "failed_attempts": [],
         "successful_attempts": [
           {
@@ -81902,13 +79230,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                  "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                       "line": 289,
                       "column": 0,
                       "character": 12694
@@ -81926,8 +79252,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.do!\n [std.assert-ok!\n   (coq.typecheck (global (const «HB_unnamed_factory_27»)) X140) \n   mixin-src: X illtyped, \n  if (not (coq.safe-dest-app X140 (global _) _)) \n   (, (coq.term->string (global (const «HB_unnamed_factory_27»)) X141) \n     (coq.term->string X140 X142) \n     (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a record)) true, \n  coq.term->gref X140 X143, factory-provides X143 X144, \n  list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
+                "goal_text": "std.do!\n [std.assert-ok!\n   (coq.typecheck (global (const «HB_unnamed_factory_27»)) X140) \n   mixin-src: X illtyped, \n  if (not (coq.safe-dest-app X140 (global _) _)) \n   (, (coq.term->string (global (const «HB_unnamed_factory_27»)) X141) \n     (coq.term->string X140 X142) \n     (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a record)) true, \n  coq.term->gref X140 X143, factory-provides X143 X144, \n  list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
                 "goal_id": 1480
               }
             ],
@@ -81940,13 +79265,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -81980,13 +79303,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -82020,13 +79341,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -82041,13 +79360,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -82347,13 +79664,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -82372,8 +79687,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -82398,13 +79712,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -82419,8 +79731,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -82452,8 +79763,7 @@
       "Inference",
       {
         "current_goal_id": 1480,
-        "current_goal_text":
-          "std.do!\n [std.assert-ok!\n   (coq.typecheck (global (const «HB_unnamed_factory_27»)) X140) \n   mixin-src: X illtyped, \n  if (not (coq.safe-dest-app X140 (global _) _)) \n   (, (coq.term->string (global (const «HB_unnamed_factory_27»)) X141) \n     (coq.term->string X140 X142) \n     (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a record)) true, \n  coq.term->gref X140 X143, factory-provides X143 X144, \n  list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
+        "current_goal_text": "std.do!\n [std.assert-ok!\n   (coq.typecheck (global (const «HB_unnamed_factory_27»)) X140) \n   mixin-src: X illtyped, \n  if (not (coq.safe-dest-app X140 (global _) _)) \n   (, (coq.term->string (global (const «HB_unnamed_factory_27»)) X141) \n     (coq.term->string X140 X142) \n     (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a record)) true, \n  coq.term->gref X140 X143, factory-provides X143 X144, \n  list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -82462,8 +79772,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -82488,14 +79797,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.assert-ok!\n (coq.typecheck (global (const «HB_unnamed_factory_27»)) X140) \n mixin-src: X illtyped",
+                "goal_text": "std.assert-ok!\n (coq.typecheck (global (const «HB_unnamed_factory_27»)) X140) \n mixin-src: X illtyped",
                 "goal_id": 1481
               },
               { "goal_text": "!", "goal_id": 1482 },
               {
-                "goal_text":
-                  "std.do!\n [if (not (coq.safe-dest-app X140 (global _) _)) \n   (, (coq.term->string (global (const «HB_unnamed_factory_27»)) X141) \n     (coq.term->string X140 X142) \n     (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a record)) true, \n  coq.term->gref X140 X143, factory-provides X143 X144, \n  list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
+                "goal_text": "std.do!\n [if (not (coq.safe-dest-app X140 (global _) _)) \n   (, (coq.term->string (global (const «HB_unnamed_factory_27»)) X141) \n     (coq.term->string X140 X142) \n     (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a record)) true, \n  coq.term->gref X140 X143, factory-provides X143 X144, \n  list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
                 "goal_id": 1483
               }
             ],
@@ -82527,13 +79834,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -82567,13 +79872,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -82607,13 +79910,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -82628,13 +79929,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -82934,13 +80233,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -82959,8 +80256,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -82985,13 +80281,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -83006,8 +80300,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -83039,8 +80332,7 @@
       "Inference",
       {
         "current_goal_id": 1481,
-        "current_goal_text":
-          "std.assert-ok!\n (coq.typecheck (global (const «HB_unnamed_factory_27»)) X140) \n mixin-src: X illtyped",
+        "current_goal_text": "std.assert-ok!\n (coq.typecheck (global (const «HB_unnamed_factory_27»)) X140) \n mixin-src: X illtyped",
         "current_goal_predicate": "std.assert-ok!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -83049,8 +80341,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                  "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -83072,14 +80363,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.typecheck (global (const «HB_unnamed_factory_27»)) X140 X146",
+                "goal_text": "coq.typecheck (global (const «HB_unnamed_factory_27»)) X140 X146",
                 "goal_id": 1484
               },
               { "goal_text": "!", "goal_id": 1485 },
               {
-                "goal_text":
-                  "X146 = ok ;\n X146 = error X147 , std.fatal-error-w-data mixin-src: X illtyped X147",
+                "goal_text": "X146 = ok ;\n X146 = error X147 , std.fatal-error-w-data mixin-src: X illtyped X147",
                 "goal_id": 1486
               },
               { "goal_text": "!", "goal_id": 1487 }
@@ -83093,8 +80382,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -83132,13 +80420,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -83172,13 +80458,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -83212,13 +80496,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -83233,13 +80515,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -83539,13 +80819,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -83564,8 +80842,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -83590,13 +80867,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -83611,8 +80886,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -83644,8 +80918,7 @@
       "Inference",
       {
         "current_goal_id": 1484,
-        "current_goal_text":
-          "coq.typecheck (global (const «HB_unnamed_factory_27»)) X140 X146",
+        "current_goal_text": "coq.typecheck (global (const «HB_unnamed_factory_27»)) X140 X146",
         "current_goal_predicate": "coq.typecheck",
         "failed_attempts": [],
         "successful_attempts": [
@@ -83656,8 +80929,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "X140 = app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]",
+                "goal_text": "X140 = app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]",
                 "goal_id": 1488
               },
               { "goal_text": "X146 = ok", "goal_id": 1489 }
@@ -83676,8 +80948,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -83715,13 +80986,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -83755,13 +81024,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -83795,13 +81062,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -83816,13 +81081,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -84122,13 +81385,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -84147,8 +81408,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -84173,13 +81433,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -84194,8 +81452,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -84227,8 +81484,7 @@
       "Inference",
       {
         "current_goal_id": 1488,
-        "current_goal_text":
-          "X140 = app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]",
+        "current_goal_text": "X140 = app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]",
         "current_goal_predicate": "=",
         "failed_attempts": [],
         "successful_attempts": [
@@ -84262,8 +81518,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -84301,13 +81556,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -84341,13 +81594,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -84381,13 +81632,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -84402,13 +81651,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -84708,13 +81955,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -84733,8 +81978,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -84759,13 +82003,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -84780,8 +82022,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -84842,8 +82083,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -84881,13 +82121,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -84921,13 +82159,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -84961,13 +82197,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -84982,13 +82216,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -85288,13 +82520,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -85313,8 +82543,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -85339,13 +82568,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -85360,8 +82587,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -85396,13 +82622,11 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "std.assert-ok!\n (coq.typecheck (global (const «HB_unnamed_factory_27»)) X140) \n mixin-src: X illtyped",
+              "goal_text": "std.assert-ok!\n (coq.typecheck (global (const «HB_unnamed_factory_27»)) X140) \n mixin-src: X illtyped",
               "goal_id": 1481
             },
             "cut_branch": {
-              "rule_text":
-                "(std.assert-ok! _ A0) :- (std.fatal-error-w-data A0 no diagnostic returned).",
+              "rule_text": "(std.assert-ok! _ A0) :- (std.fatal-error-w-data A0 no diagnostic returned).",
               "rule_loc": [
                 "File",
                 {
@@ -85426,8 +82650,7 @@
       "Inference",
       {
         "current_goal_id": 1486,
-        "current_goal_text":
-          "ok = ok ; ok = error X147 , std.fatal-error-w-data mixin-src: X illtyped X147",
+        "current_goal_text": "ok = ok ; ok = error X147 , std.fatal-error-w-data mixin-src: X illtyped X147",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -85479,8 +82702,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -85518,13 +82740,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -85558,13 +82778,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -85598,13 +82816,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -85619,13 +82835,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -85925,13 +83139,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -85950,8 +83162,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -85976,13 +83187,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -85997,8 +83206,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -86073,8 +83281,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -86112,13 +83319,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -86152,13 +83357,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -86192,13 +83395,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -86213,13 +83414,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -86519,13 +83718,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -86544,8 +83741,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -86570,13 +83766,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -86591,8 +83785,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -86627,8 +83820,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "X146 = ok ;\n X146 = error X147 , std.fatal-error-w-data mixin-src: X illtyped X147",
+              "goal_text": "X146 = ok ;\n X146 = error X147 , std.fatal-error-w-data mixin-src: X illtyped X147",
               "goal_id": 1486
             },
             "cut_branch": {
@@ -86662,8 +83854,7 @@
       "Inference",
       {
         "current_goal_id": 1483,
-        "current_goal_text":
-          "std.do!\n [if\n   (not\n     (coq.safe-dest-app\n       (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n       (global _) _)) \n   (, (coq.term->string (global (const «HB_unnamed_factory_27»)) X141) \n     (coq.term->string\n       (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X142) \n     (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a record)) true, \n  coq.term->gref\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X143, \n  factory-provides X143 X144, list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
+        "current_goal_text": "std.do!\n [if\n   (not\n     (coq.safe-dest-app\n       (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n       (global _) _)) \n   (, (coq.term->string (global (const «HB_unnamed_factory_27»)) X141) \n     (coq.term->string\n       (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X142) \n     (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a record)) true, \n  coq.term->gref\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X143, \n  factory-provides X143 X144, list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -86672,8 +83863,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -86698,14 +83888,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "if\n (not\n   (coq.safe-dest-app\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n     (global _) _)) \n (, (coq.term->string (global (const «HB_unnamed_factory_27»)) X141) \n   (coq.term->string\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X142) \n   (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a record)) true",
+                "goal_text": "if\n (not\n   (coq.safe-dest-app\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n     (global _) _)) \n (, (coq.term->string (global (const «HB_unnamed_factory_27»)) X141) \n   (coq.term->string\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X142) \n   (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a record)) true",
                 "goal_id": 1491
               },
               { "goal_text": "!", "goal_id": 1492 },
               {
-                "goal_text":
-                  "std.do!\n [coq.term->gref\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X143, \n  factory-provides X143 X144, list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
+                "goal_text": "std.do!\n [coq.term->gref\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X143, \n  factory-provides X143 X144, list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
                 "goal_id": 1493
               }
             ],
@@ -86756,13 +83944,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -86796,13 +83982,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -86836,13 +84020,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -86857,13 +84039,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -87163,13 +84343,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -87188,8 +84366,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -87214,13 +84391,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -87235,8 +84410,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -87268,8 +84442,7 @@
       "Inference",
       {
         "current_goal_id": 1491,
-        "current_goal_text":
-          "if\n (not\n   (coq.safe-dest-app\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n     (global _) _)) \n (, (coq.term->string (global (const «HB_unnamed_factory_27»)) X141) \n   (coq.term->string\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X142) \n   (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a record)) true",
+        "current_goal_text": "if\n (not\n   (coq.safe-dest-app\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n     (global _) _)) \n (, (coq.term->string (global (const «HB_unnamed_factory_27»)) X141) \n   (coq.term->string\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X142) \n   (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a record)) true",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -87303,14 +84476,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "not\n (coq.safe-dest-app\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n   (global _) _)",
+                "goal_text": "not\n (coq.safe-dest-app\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n   (global _) _)",
                 "goal_id": 1494
               },
               { "goal_text": "!", "goal_id": 1495 },
               {
-                "goal_text":
-                  ", (coq.term->string (global (const «HB_unnamed_factory_27»)) X141) \n (coq.term->string\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X142) \n (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a record)",
+                "goal_text": ", (coq.term->string (global (const «HB_unnamed_factory_27»)) X141) \n (coq.term->string\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X142) \n (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a record)",
                 "goal_id": 1496
               }
             ],
@@ -87380,13 +84551,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -87420,13 +84589,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -87460,13 +84627,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -87481,13 +84646,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -87787,13 +84950,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -87812,8 +84973,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -87838,13 +84998,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -87859,8 +85017,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -87892,8 +85049,7 @@
       "Inference",
       {
         "current_goal_id": 1494,
-        "current_goal_text":
-          "not\n (coq.safe-dest-app\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n   (global _) _)",
+        "current_goal_text": "not\n (coq.safe-dest-app\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n   (global _) _)",
         "current_goal_predicate": "not",
         "failed_attempts": [],
         "successful_attempts": [
@@ -87923,8 +85079,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global _) _",
+                "goal_text": "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global _) _",
                 "goal_id": 1497
               },
               { "goal_text": "!", "goal_id": 1498 },
@@ -88015,13 +85170,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -88055,13 +85208,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -88095,13 +85246,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -88116,13 +85265,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -88422,13 +85569,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -88447,8 +85592,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -88473,13 +85617,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -88494,8 +85636,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -88527,8 +85668,7 @@
       "Inference",
       {
         "current_goal_id": 1497,
-        "current_goal_text":
-          "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global _) _",
+        "current_goal_text": "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global _) _",
         "current_goal_predicate": "coq.safe-dest-app",
         "failed_attempts": [],
         "successful_attempts": [
@@ -88537,8 +85677,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (coq.safe-dest-app A0 A2 A4), (std.append A4 A1 A3).",
+                  "rule_text": "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (coq.safe-dest-app A0 A2 A4), (std.append A4 A1 A3).",
                   "rule_loc": [
                     "File",
                     {
@@ -88559,8 +85698,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1500 },
               {
-                "goal_text":
-                  "coq.safe-dest-app (global (indt «IsSelfA'.axioms_»)) (global _) X148",
+                "goal_text": "coq.safe-dest-app (global (indt «IsSelfA'.axioms_»)) (global _) X148",
                 "goal_id": 1501
               },
               {
@@ -88577,8 +85715,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (coq.safe-dest-app A0 A2 A4), (std.append A4 A1 A3).",
+                "rule_text": "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (coq.safe-dest-app A0 A2 A4), (std.append A4 A1 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -88673,13 +85810,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -88713,13 +85848,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -88753,13 +85886,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -88774,13 +85905,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -89080,13 +86209,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -89105,8 +86232,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -89131,13 +86257,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -89152,8 +86276,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -89188,8 +86311,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global _) _",
+              "goal_text": "coq.safe-dest-app\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n (global _) _",
               "goal_id": 1497
             },
             "cut_branch": {
@@ -89217,8 +86339,7 @@
       "Inference",
       {
         "current_goal_id": 1501,
-        "current_goal_text":
-          "coq.safe-dest-app (global (indt «IsSelfA'.axioms_»)) (global _) X148",
+        "current_goal_text": "coq.safe-dest-app (global (indt «IsSelfA'.axioms_»)) (global _) X148",
         "current_goal_predicate": "coq.safe-dest-app",
         "failed_attempts": [],
         "successful_attempts": [
@@ -89273,8 +86394,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (coq.safe-dest-app A0 A2 A4), (std.append A4 A1 A3).",
+                "rule_text": "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (coq.safe-dest-app A0 A2 A4), (std.append A4 A1 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -89369,13 +86489,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -89409,13 +86527,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -89449,13 +86565,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -89470,13 +86584,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -89776,13 +86888,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -89801,8 +86911,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -89827,13 +86936,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -89848,8 +86955,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -89936,8 +87042,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (coq.safe-dest-app A0 A2 A4), (std.append A4 A1 A3).",
+                "rule_text": "(coq.safe-dest-app (app [A0 | A1]) A2 A3) :- (!), \n (coq.safe-dest-app A0 A2 A4), (std.append A4 A1 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -90032,13 +87137,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -90072,13 +87175,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -90112,13 +87213,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -90133,13 +87232,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -90439,13 +87536,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -90464,8 +87559,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -90490,13 +87584,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -90511,8 +87603,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -90547,8 +87638,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "not\n (coq.safe-dest-app\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n   (global _) _)",
+              "goal_text": "not\n (coq.safe-dest-app\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n   (global _) _)",
               "goal_id": 1494
             },
             "cut_branch": {
@@ -90662,13 +87752,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -90702,13 +87790,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -90742,13 +87828,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -90763,13 +87847,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -91069,13 +88151,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -91094,8 +88174,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -91120,13 +88199,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -91141,8 +88218,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -91174,8 +88250,7 @@
       "Inference",
       {
         "current_goal_id": 1491,
-        "current_goal_text":
-          "if\n (not\n   (coq.safe-dest-app\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n     (global _) _)) \n (, (coq.term->string (global (const «HB_unnamed_factory_27»)) X141) \n   (coq.term->string\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X142) \n   (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a record)) true",
+        "current_goal_text": "if\n (not\n   (coq.safe-dest-app\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) \n     (global _) _)) \n (, (coq.term->string (global (const «HB_unnamed_factory_27»)) X141) \n   (coq.term->string\n     (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X142) \n   (coq.error Term:\n X141 \nhas type:\n X142 \nwhich is not a record)) true",
         "current_goal_predicate": "if",
         "failed_attempts": [],
         "successful_attempts": [
@@ -91265,13 +88340,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -91305,13 +88378,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -91345,13 +88416,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -91366,13 +88435,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -91672,13 +88739,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -91697,8 +88762,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -91723,13 +88787,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -91744,8 +88806,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -91886,13 +88947,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -91926,13 +88985,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -91966,13 +89023,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -91987,13 +89042,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -92293,13 +89346,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -92318,8 +89369,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -92344,13 +89394,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -92365,8 +89413,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -92404,8 +89451,7 @@
       "Inference",
       {
         "current_goal_id": 1493,
-        "current_goal_text":
-          "std.do!\n [coq.term->gref\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X143, \n  factory-provides X143 X144, list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
+        "current_goal_text": "std.do!\n [coq.term->gref\n   (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X143, \n  factory-provides X143 X144, list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -92414,8 +89460,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -92440,14 +89485,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.term->gref\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X143",
+                "goal_text": "coq.term->gref\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X143",
                 "goal_id": 1504
               },
               { "goal_text": "!", "goal_id": 1505 },
               {
-                "goal_text":
-                  "std.do!\n [factory-provides X143 X144, list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
+                "goal_text": "std.do!\n [factory-provides X143 X144, list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
                 "goal_id": 1506
               }
             ],
@@ -92517,13 +89560,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -92557,13 +89598,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -92597,13 +89636,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -92618,13 +89655,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -92924,13 +89959,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -92949,8 +89982,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -92975,13 +90007,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -92996,8 +90026,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -93029,8 +90058,7 @@
       "Inference",
       {
         "current_goal_id": 1504,
-        "current_goal_text":
-          "coq.term->gref\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X143",
+        "current_goal_text": "coq.term->gref\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X143",
         "current_goal_predicate": "coq.term->gref",
         "failed_attempts": [],
         "successful_attempts": [
@@ -93039,8 +90067,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(coq.term->gref (app [A0 | _]) A1) :- (!), (coq.term->gref A0 A1).",
+                  "rule_text": "(coq.term->gref (app [A0 | _]) A1) :- (!), (coq.term->gref A0 A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -93060,8 +90087,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1507 },
               {
-                "goal_text":
-                  "coq.term->gref (global (indt «IsSelfA'.axioms_»)) X143",
+                "goal_text": "coq.term->gref (global (indt «IsSelfA'.axioms_»)) X143",
                 "goal_id": 1508
               }
             ],
@@ -93074,8 +90100,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.term->gref (app [A0 | _]) A1) :- (!), (coq.term->gref A0 A1).",
+                "rule_text": "(coq.term->gref (app [A0 | _]) A1) :- (!), (coq.term->gref A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -93151,13 +90176,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -93191,13 +90214,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -93231,13 +90252,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -93252,13 +90271,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -93558,13 +90575,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -93583,8 +90598,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -93609,13 +90623,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -93630,8 +90642,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -93666,13 +90677,11 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "coq.term->gref\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X143",
+              "goal_text": "coq.term->gref\n (app [global (indt «IsSelfA'.axioms_»), global (indt «nat»)]) X143",
               "goal_id": 1504
             },
             "cut_branch": {
-              "rule_text":
-                "(coq.term->gref A0 _) :- (std.fatal-error-w-data\n                           term->gref: input has no global reference A0).",
+              "rule_text": "(coq.term->gref A0 _) :- (std.fatal-error-w-data\n                           term->gref: input has no global reference A0).",
               "rule_loc": [
                 "File",
                 {
@@ -93696,8 +90705,7 @@
       "Inference",
       {
         "current_goal_id": 1508,
-        "current_goal_text":
-          "coq.term->gref (global (indt «IsSelfA'.axioms_»)) X143",
+        "current_goal_text": "coq.term->gref (global (indt «IsSelfA'.axioms_»)) X143",
         "current_goal_predicate": "coq.term->gref",
         "failed_attempts": [],
         "successful_attempts": [
@@ -93752,8 +90760,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.term->gref (app [A0 | _]) A1) :- (!), (coq.term->gref A0 A1).",
+                "rule_text": "(coq.term->gref (app [A0 | _]) A1) :- (!), (coq.term->gref A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -93829,13 +90836,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -93869,13 +90874,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -93909,13 +90912,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -93930,13 +90931,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -94236,13 +91235,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -94261,8 +91258,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -94287,13 +91283,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -94308,8 +91302,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -94344,13 +91337,11 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "coq.term->gref (global (indt «IsSelfA'.axioms_»)) X143",
+              "goal_text": "coq.term->gref (global (indt «IsSelfA'.axioms_»)) X143",
               "goal_id": 1508
             },
             "cut_branch": {
-              "rule_text":
-                "(coq.term->gref A0 _) :- (std.fatal-error-w-data\n                           term->gref: input has no global reference A0).",
+              "rule_text": "(coq.term->gref A0 _) :- (std.fatal-error-w-data\n                           term->gref: input has no global reference A0).",
               "rule_loc": [
                 "File",
                 {
@@ -94380,8 +91371,7 @@
       "Inference",
       {
         "current_goal_id": 1506,
-        "current_goal_text":
-          "std.do!\n [factory-provides (indt «IsSelfA'.axioms_») X144, \n  list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
+        "current_goal_text": "std.do!\n [factory-provides (indt «IsSelfA'.axioms_») X144, \n  list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -94390,8 +91380,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -94416,14 +91405,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "factory-provides (indt «IsSelfA'.axioms_») X144",
+                "goal_text": "factory-provides (indt «IsSelfA'.axioms_») X144",
                 "goal_id": 1510
               },
               { "goal_text": "!", "goal_id": 1511 },
               {
-                "goal_text":
-                  "std.do!\n [list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
+                "goal_text": "std.do!\n [list-w-params_list X144 X145, \n  std.filter X145 (c0 \\ not (std.mem! [] c0)) X138]",
                 "goal_id": 1512
               }
             ],
@@ -94512,13 +91499,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -94552,13 +91537,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -94592,13 +91575,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -94613,13 +91594,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -94919,13 +91898,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -94944,8 +91921,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -94970,13 +91946,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -94991,8 +91965,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -95024,8 +91997,7 @@
       "Inference",
       {
         "current_goal_id": 1510,
-        "current_goal_text":
-          "factory-provides (indt «IsSelfA'.axioms_») X144",
+        "current_goal_text": "factory-provides (indt «IsSelfA'.axioms_») X144",
         "current_goal_predicate": "factory-provides",
         "failed_attempts": [],
         "successful_attempts": [
@@ -95034,13 +92006,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                  "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 86,
                       "column": 0,
                       "character": 2829
@@ -95055,8 +92025,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.do!\n [factory-alias->gref (indt «IsSelfA'.axioms_») X150, gref-deps X150 X151, \n  w-params.map X151 (factory-provides.base X150) X144]",
+                "goal_text": "std.do!\n [factory-alias->gref (indt «IsSelfA'.axioms_») X150, gref-deps X150 X151, \n  w-params.map X151 (factory-provides.base X150) X144]",
                 "goal_id": 1513
               }
             ],
@@ -95069,13 +92038,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -95166,13 +92133,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -95206,13 +92171,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -95246,13 +92209,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -95267,13 +92228,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -95573,13 +92532,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -95598,8 +92555,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -95624,13 +92580,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -95645,8 +92599,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -95678,8 +92631,7 @@
       "Inference",
       {
         "current_goal_id": 1513,
-        "current_goal_text":
-          "std.do!\n [factory-alias->gref (indt «IsSelfA'.axioms_») X150, gref-deps X150 X151, \n  w-params.map X151 (factory-provides.base X150) X144]",
+        "current_goal_text": "std.do!\n [factory-alias->gref (indt «IsSelfA'.axioms_») X150, gref-deps X150 X151, \n  w-params.map X151 (factory-provides.base X150) X144]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -95688,8 +92640,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -95714,14 +92665,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "factory-alias->gref (indt «IsSelfA'.axioms_») X150",
+                "goal_text": "factory-alias->gref (indt «IsSelfA'.axioms_») X150",
                 "goal_id": 1514
               },
               { "goal_text": "!", "goal_id": 1515 },
               {
-                "goal_text":
-                  "std.do!\n [gref-deps X150 X151, w-params.map X151 (factory-provides.base X150) X144]",
+                "goal_text": "std.do!\n [gref-deps X150 X151, w-params.map X151 (factory-provides.base X150) X144]",
                 "goal_id": 1516
               }
             ],
@@ -95753,13 +92702,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -95850,13 +92797,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -95890,13 +92835,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -95930,13 +92873,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -95951,13 +92892,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -96257,13 +93196,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -96282,8 +93219,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -96308,13 +93244,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -96329,8 +93263,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -96362,8 +93295,7 @@
       "Inference",
       {
         "current_goal_id": 1514,
-        "current_goal_text":
-          "factory-alias->gref (indt «IsSelfA'.axioms_») X150",
+        "current_goal_text": "factory-alias->gref (indt «IsSelfA'.axioms_») X150",
         "current_goal_predicate": "factory-alias->gref",
         "failed_attempts": [],
         "successful_attempts": [
@@ -96372,13 +93304,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
+                  "rule_text": "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 74,
                       "column": 0,
                       "character": 2385
@@ -96393,8 +93323,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "phant-abbrev X150 (indt «IsSelfA'.axioms_») _",
+                "goal_text": "phant-abbrev X150 (indt «IsSelfA'.axioms_») _",
                 "goal_id": 1517
               },
               { "goal_text": "!", "goal_id": 1518 }
@@ -96408,13 +93337,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
+                "rule_text": "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 74,
                     "column": 0,
                     "character": 2385
@@ -96448,13 +93375,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -96545,13 +93470,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -96585,13 +93508,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -96625,13 +93546,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -96646,13 +93565,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -96952,13 +93869,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -96977,8 +93892,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -97003,13 +93917,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -97024,8 +93936,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -97057,16 +93968,14 @@
       "Inference",
       {
         "current_goal_id": 1517,
-        "current_goal_text":
-          "phant-abbrev X150 (indt «IsSelfA'.axioms_») _",
+        "current_goal_text": "phant-abbrev X150 (indt «IsSelfA'.axioms_») _",
         "current_goal_predicate": "phant-abbrev",
         "failed_attempts": [
           {
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97090,8 +93999,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «HasA.Axioms_») (const «HasA.phant_Build») \n  «interleave_context.HasA.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «HasA.Axioms_») (const «HasA.phant_Build») \n  «interleave_context.HasA.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97115,8 +94023,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97140,8 +94047,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «HasB.Axioms_») (const «HasB.phant_Build») \n  «interleave_context.HasB.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «HasB.Axioms_») (const «HasB.phant_Build») \n  «interleave_context.HasB.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97165,8 +94071,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97190,8 +94095,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «IsSelfA.Axioms_») (const «IsSelfA.phant_Build») \n  «interleave_context.IsSelfA.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «IsSelfA.Axioms_») (const «IsSelfA.phant_Build») \n  «interleave_context.IsSelfA.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97215,8 +94119,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97240,8 +94143,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «IsSelfA'.Axioms_») (const «IsSelfA'.phant_Build») \n  «interleave_context.IsSelfA'.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «IsSelfA'.Axioms_») (const «IsSelfA'.phant_Build») \n  «interleave_context.IsSelfA'.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97269,8 +94171,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -97289,13 +94190,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
+                "rule_text": "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 74,
                     "column": 0,
                     "character": 2385
@@ -97329,13 +94228,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -97426,13 +94323,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -97466,13 +94361,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -97506,13 +94399,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -97527,13 +94418,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -97833,13 +94722,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -97858,8 +94745,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -97884,13 +94770,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -97905,8 +94789,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -97938,8 +94821,7 @@
       "Inference",
       {
         "current_goal_id": 1514,
-        "current_goal_text":
-          "factory-alias->gref (indt «IsSelfA'.axioms_») X150",
+        "current_goal_text": "factory-alias->gref (indt «IsSelfA'.axioms_») X150",
         "current_goal_predicate": "factory-alias->gref",
         "failed_attempts": [],
         "successful_attempts": [
@@ -97948,13 +94830,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
+                  "rule_text": "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 75,
                       "column": 0,
                       "character": 2443
@@ -97983,13 +94863,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
+                "rule_text": "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 75,
                     "column": 0,
                     "character": 2443
@@ -98023,13 +94901,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -98120,13 +94996,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -98160,13 +95034,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -98200,13 +95072,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -98221,13 +95091,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -98527,13 +95395,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -98552,8 +95418,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -98578,13 +95443,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -98599,8 +95462,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -98639,8 +95501,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -98663,8 +95524,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -98687,8 +95547,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -98709,8 +95568,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                  "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                   "rule_loc": [
                     "File",
                     {
@@ -98739,8 +95597,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -98759,13 +95616,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
+                "rule_text": "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 75,
                     "column": 0,
                     "character": 2443
@@ -98799,13 +95654,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -98896,13 +95749,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -98936,13 +95787,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -98976,13 +95825,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -98997,13 +95844,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -99303,13 +96148,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -99328,8 +96171,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -99354,13 +96196,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -99375,8 +96215,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -99411,13 +96250,11 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-alias->gref (indt «IsSelfA'.axioms_») X150",
+              "goal_text": "factory-alias->gref (indt «IsSelfA'.axioms_») X150",
               "goal_id": 1514
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt «A.axioms_») (indt «A.axioms_»)) :- .",
+              "rule_text": "(factory-alias->gref (indt «A.axioms_») (indt «A.axioms_»)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -99431,13 +96268,11 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-alias->gref (indt «IsSelfA'.axioms_») X150",
+              "goal_text": "factory-alias->gref (indt «IsSelfA'.axioms_») X150",
               "goal_id": 1514
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt «B.axioms_») (indt «B.axioms_»)) :- .",
+              "rule_text": "(factory-alias->gref (indt «B.axioms_») (indt «B.axioms_»)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -99451,13 +96286,11 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-alias->gref (indt «IsSelfA'.axioms_») X150",
+              "goal_text": "factory-alias->gref (indt «IsSelfA'.axioms_») X150",
               "goal_id": 1514
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt «SelfA.axioms_») (indt «SelfA.axioms_»)) :- .",
+              "rule_text": "(factory-alias->gref (indt «SelfA.axioms_») (indt «SelfA.axioms_»)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -99487,8 +96320,7 @@
       "Inference",
       {
         "current_goal_id": 1516,
-        "current_goal_text":
-          "std.do!\n [gref-deps (indt «IsSelfA'.axioms_») X151, \n  w-params.map X151 (factory-provides.base (indt «IsSelfA'.axioms_»)) X144]",
+        "current_goal_text": "std.do!\n [gref-deps (indt «IsSelfA'.axioms_») X151, \n  w-params.map X151 (factory-provides.base (indt «IsSelfA'.axioms_»)) X144]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -99497,8 +96329,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -99528,8 +96359,7 @@
               },
               { "goal_text": "!", "goal_id": 1522 },
               {
-                "goal_text":
-                  "std.do!\n [w-params.map X151 (factory-provides.base (indt «IsSelfA'.axioms_»)) X144]",
+                "goal_text": "std.do!\n [w-params.map X151 (factory-provides.base (indt «IsSelfA'.axioms_»)) X144]",
                 "goal_id": 1523
               }
             ],
@@ -99580,13 +96410,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -99677,13 +96505,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -99717,13 +96543,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -99757,13 +96581,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -99778,13 +96600,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -100084,13 +96904,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -100109,8 +96927,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -100135,13 +96952,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -100156,8 +96971,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -100198,8 +97012,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(gref-deps (indt «IsSelfA'.axioms_») \n  (w-params.nil TheType (sort (typ «interleave_context.382»)) (c0 \\ []))) :- .",
+                  "rule_text": "(gref-deps (indt «IsSelfA'.axioms_») \n  (w-params.nil TheType (sort (typ «interleave_context.382»)) (c0 \\ []))) :- .",
                   "rule_loc": [
                     "File",
                     {
@@ -100228,8 +97041,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(gref-deps (indt «IsSelfA'.axioms_») \n  (w-params.nil TheType (sort (typ «interleave_context.382»)) (c0 \\ []))) :- .",
+                "rule_text": "(gref-deps (indt «IsSelfA'.axioms_») \n  (w-params.nil TheType (sort (typ «interleave_context.382»)) (c0 \\ []))) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -100286,13 +97098,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -100383,13 +97193,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -100423,13 +97231,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -100463,13 +97269,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -100484,13 +97288,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -100790,13 +97592,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -100815,8 +97615,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -100841,13 +97640,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -100862,8 +97659,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -100901,8 +97697,7 @@
       "Inference",
       {
         "current_goal_id": 1523,
-        "current_goal_text":
-          "std.do!\n [w-params.map\n   (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n   (factory-provides.base (indt «IsSelfA'.axioms_»)) X144]",
+        "current_goal_text": "std.do!\n [w-params.map\n   (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n   (factory-provides.base (indt «IsSelfA'.axioms_»)) X144]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -100911,8 +97706,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -100934,8 +97728,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "w-params.map\n (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n (factory-provides.base (indt «IsSelfA'.axioms_»)) X144",
+                "goal_text": "w-params.map\n (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n (factory-provides.base (indt «IsSelfA'.axioms_»)) X144",
                 "goal_id": 1524
               },
               { "goal_text": "!", "goal_id": 1525 },
@@ -101007,13 +97800,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -101104,13 +97895,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -101144,13 +97933,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -101184,13 +97971,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -101205,13 +97990,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -101511,13 +98294,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -101536,8 +98317,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -101562,13 +98342,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -101583,8 +98361,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -101616,8 +98393,7 @@
       "Inference",
       {
         "current_goal_id": 1524,
-        "current_goal_text":
-          "w-params.map\n (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n (factory-provides.base (indt «IsSelfA'.axioms_»)) X144",
+        "current_goal_text": "w-params.map\n (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n (factory-provides.base (indt «IsSelfA'.axioms_»)) X144",
         "current_goal_predicate": "w-params.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -101626,13 +98402,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                  "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                       "line": 245,
                       "column": 0,
                       "character": 9440
@@ -101654,8 +98428,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "w-params.then\n (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n mk-w-params.cons-name mk-w-params.nil-name \n (factory-provides.base (indt «IsSelfA'.axioms_»)) X144",
+                "goal_text": "w-params.then\n (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n mk-w-params.cons-name mk-w-params.nil-name \n (factory-provides.base (indt «IsSelfA'.axioms_»)) X144",
                 "goal_id": 1527
               }
             ],
@@ -101668,13 +98441,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -101746,13 +98517,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -101843,13 +98612,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -101883,13 +98650,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -101923,13 +98688,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -101944,13 +98707,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -102250,13 +99011,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -102275,8 +99034,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -102301,13 +99059,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -102322,8 +99078,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -102355,8 +99110,7 @@
       "Inference",
       {
         "current_goal_id": 1527,
-        "current_goal_text":
-          "w-params.then\n (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n mk-w-params.cons-name mk-w-params.nil-name \n (factory-provides.base (indt «IsSelfA'.axioms_»)) X144",
+        "current_goal_text": "w-params.then\n (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n mk-w-params.cons-name mk-w-params.nil-name \n (factory-provides.base (indt «IsSelfA'.axioms_»)) X144",
         "current_goal_predicate": "w-params.then",
         "failed_attempts": [],
         "successful_attempts": [
@@ -102365,13 +99119,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                  "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                       "line": 239,
                       "column": 0,
                       "character": 9183
@@ -102395,8 +99147,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "w-params.fold\n (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n mk-w-params.cons-name (c0 \\ c1 \\ c2 \\ c3 \\ c4 \\\n sigma c5 \\\n  pi c6 \\\n   decl c6 c1 c2 =>\n    factory-provides.base (indt «IsSelfA'.axioms_») c0 c6 (c3 c6) (c5 c6) ,\n   mk-w-params.nil-name c1 c2 c5 c4) X144",
+                "goal_text": "w-params.fold\n (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n mk-w-params.cons-name (c0 \\ c1 \\ c2 \\ c3 \\ c4 \\\n sigma c5 \\\n  pi c6 \\\n   decl c6 c1 c2 =>\n    factory-provides.base (indt «IsSelfA'.axioms_») c0 c6 (c3 c6) (c5 c6) ,\n   mk-w-params.nil-name c1 c2 c5 c4) X144",
                 "goal_id": 1528
               }
             ],
@@ -102409,13 +99160,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -102430,13 +99179,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -102508,13 +99255,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -102605,13 +99350,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -102645,13 +99388,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -102685,13 +99426,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -102706,13 +99445,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -103012,13 +99749,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -103037,8 +99772,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -103063,13 +99797,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -103084,8 +99816,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -103117,8 +99848,7 @@
       "Inference",
       {
         "current_goal_id": 1528,
-        "current_goal_text":
-          "w-params.fold\n (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n mk-w-params.cons-name (c0 \\ c1 \\ c2 \\ c3 \\ c4 \\\n sigma c5 \\\n  pi c6 \\\n   decl c6 c1 c2 =>\n    factory-provides.base (indt «IsSelfA'.axioms_») c0 c6 (c3 c6) (c5 c6) ,\n   mk-w-params.nil-name c1 c2 c5 c4) X144",
+        "current_goal_text": "w-params.fold\n (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n mk-w-params.cons-name (c0 \\ c1 \\ c2 \\ c3 \\ c4 \\\n sigma c5 \\\n  pi c6 \\\n   decl c6 c1 c2 =>\n    factory-provides.base (indt «IsSelfA'.axioms_») c0 c6 (c3 c6) (c5 c6) ,\n   mk-w-params.nil-name c1 c2 c5 c4) X144",
         "current_goal_predicate": "w-params.fold",
         "failed_attempts": [],
         "successful_attempts": [
@@ -103127,13 +99857,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                  "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                       "line": 213,
                       "column": 0,
                       "character": 8143
@@ -103156,8 +99884,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "w-params.fold.params\n (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n mk-w-params.cons-name (c0 \\ c1 \\ c2 \\ c3 \\ c4 \\\n sigma c5 \\\n  pi c6 \\\n   decl c6 c1 c2 =>\n    factory-provides.base (indt «IsSelfA'.axioms_») c0 c6 (c3 c6) (c5 c6) ,\n   mk-w-params.nil-name c1 c2 c5 c4) [] X144",
+                "goal_text": "w-params.fold.params\n (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n mk-w-params.cons-name (c0 \\ c1 \\ c2 \\ c3 \\ c4 \\\n sigma c5 \\\n  pi c6 \\\n   decl c6 c1 c2 =>\n    factory-provides.base (indt «IsSelfA'.axioms_») c0 c6 (c3 c6) (c5 c6) ,\n   mk-w-params.nil-name c1 c2 c5 c4) [] X144",
                 "goal_id": 1529
               }
             ],
@@ -103170,13 +99897,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -103191,13 +99916,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -103212,13 +99935,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -103290,13 +100011,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -103387,13 +100106,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -103427,13 +100144,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -103467,13 +100182,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -103488,13 +100201,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -103794,13 +100505,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -103819,8 +100528,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -103845,13 +100553,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -103866,8 +100572,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -103899,8 +100604,7 @@
       "Inference",
       {
         "current_goal_id": 1529,
-        "current_goal_text":
-          "w-params.fold.params\n (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n mk-w-params.cons-name (c0 \\ c1 \\ c2 \\ c3 \\ c4 \\\n sigma c5 \\\n  pi c6 \\\n   decl c6 c1 c2 =>\n    factory-provides.base (indt «IsSelfA'.axioms_») c0 c6 (c3 c6) (c5 c6) ,\n   mk-w-params.nil-name c1 c2 c5 c4) [] X144",
+        "current_goal_text": "w-params.fold.params\n (w-params.nil TheType (sort (typ «interleave_context.382»)) c0 \\ []) \n mk-w-params.cons-name (c0 \\ c1 \\ c2 \\ c3 \\ c4 \\\n sigma c5 \\\n  pi c6 \\\n   decl c6 c1 c2 =>\n    factory-provides.base (indt «IsSelfA'.axioms_») c0 c6 (c3 c6) (c5 c6) ,\n   mk-w-params.nil-name c1 c2 c5 c4) [] X144",
         "current_goal_predicate": "w-params.fold.params",
         "failed_attempts": [],
         "successful_attempts": [
@@ -103909,13 +100613,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                  "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                       "line": 224,
                       "column": 0,
                       "character": 8609
@@ -103938,8 +100640,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1530 },
               {
-                "goal_text":
-                  "std.do!\n [coq.id->name TheType X152, std.rev [] X153, \n  sigma c0 \\\n   pi c1 \\\n    decl c1 X152 (sort (typ «interleave_context.382»)) =>\n     factory-provides.base (indt «IsSelfA'.axioms_») X153 c1 [] (c0 c1) ,\n    mk-w-params.nil-name X152 (sort (typ «interleave_context.382»)) c0 X144]",
+                "goal_text": "std.do!\n [coq.id->name TheType X152, std.rev [] X153, \n  sigma c0 \\\n   pi c1 \\\n    decl c1 X152 (sort (typ «interleave_context.382»)) =>\n     factory-provides.base (indt «IsSelfA'.axioms_») X153 c1 [] (c0 c1) ,\n    mk-w-params.nil-name X152 (sort (typ «interleave_context.382»)) c0 X144]",
                 "goal_id": 1531
               }
             ],
@@ -103952,13 +100653,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -103973,13 +100672,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -103994,13 +100691,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -104015,13 +100710,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -104093,13 +100786,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -104190,13 +100881,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -104230,13 +100919,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -104270,13 +100957,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -104291,13 +100976,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -104597,13 +101280,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -104622,8 +101303,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -104648,13 +101328,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -104669,8 +101347,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -104708,8 +101385,7 @@
       "Inference",
       {
         "current_goal_id": 1531,
-        "current_goal_text":
-          "std.do!\n [coq.id->name TheType X152, std.rev [] X153, \n  sigma c0 \\\n   pi c1 \\\n    decl c1 X152 (sort (typ «interleave_context.382»)) =>\n     factory-provides.base (indt «IsSelfA'.axioms_») X153 c1 [] (c0 c1) ,\n    mk-w-params.nil-name X152 (sort (typ «interleave_context.382»)) c0 X144]",
+        "current_goal_text": "std.do!\n [coq.id->name TheType X152, std.rev [] X153, \n  sigma c0 \\\n   pi c1 \\\n    decl c1 X152 (sort (typ «interleave_context.382»)) =>\n     factory-provides.base (indt «IsSelfA'.axioms_») X153 c1 [] (c0 c1) ,\n    mk-w-params.nil-name X152 (sort (typ «interleave_context.382»)) c0 X144]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -104718,8 +101394,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -104743,8 +101418,7 @@
               { "goal_text": "coq.id->name TheType X152", "goal_id": 1532 },
               { "goal_text": "!", "goal_id": 1533 },
               {
-                "goal_text":
-                  "std.do!\n [std.rev [] X153, \n  sigma c0 \\\n   pi c1 \\\n    decl c1 X152 (sort (typ «interleave_context.382»)) =>\n     factory-provides.base (indt «IsSelfA'.axioms_») X153 c1 [] (c0 c1) ,\n    mk-w-params.nil-name X152 (sort (typ «interleave_context.382»)) c0 X144]",
+                "goal_text": "std.do!\n [std.rev [] X153, \n  sigma c0 \\\n   pi c1 \\\n    decl c1 X152 (sort (typ «interleave_context.382»)) =>\n     factory-provides.base (indt «IsSelfA'.axioms_») X153 c1 [] (c0 c1) ,\n    mk-w-params.nil-name X152 (sort (typ «interleave_context.382»)) c0 X144]",
                 "goal_id": 1534
               }
             ],
@@ -104776,13 +101450,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -104797,13 +101469,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -104818,13 +101488,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -104839,13 +101507,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -104917,13 +101583,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -105014,13 +101678,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -105054,13 +101716,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -105094,13 +101754,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -105115,13 +101773,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -105421,13 +102077,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -105446,8 +102100,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -105472,13 +102125,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -105493,8 +102144,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -105535,8 +102185,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(coq.id->name A0 A1) :- (coq.string->name A0 A1).",
+                  "rule_text": "(coq.id->name A0 A1) :- (coq.string->name A0 A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -105549,8 +102198,7 @@
                 }
               ],
               "events": [
-                [ "Assign", "A0 := TheType" ],
-                [ "Assign", "A1 := X152" ]
+                [ "Assign", "A0 := TheType" ], [ "Assign", "A1 := X152" ]
               ]
             },
             "siblings": [
@@ -105568,8 +102216,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.id->name A0 A1) :- (coq.string->name A0 A1).",
+                "rule_text": "(coq.id->name A0 A1) :- (coq.string->name A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -105607,13 +102254,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -105628,13 +102273,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -105649,13 +102292,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -105670,13 +102311,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -105748,13 +102387,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -105845,13 +102482,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -105885,13 +102520,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -105925,13 +102558,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -105946,13 +102577,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -106252,13 +102881,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -106277,8 +102904,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -106303,13 +102929,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -106324,8 +102948,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -106383,8 +103006,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.id->name A0 A1) :- (coq.string->name A0 A1).",
+                "rule_text": "(coq.id->name A0 A1) :- (coq.string->name A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -106422,13 +103044,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -106443,13 +103063,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -106464,13 +103082,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -106485,13 +103101,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -106563,13 +103177,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -106660,13 +103272,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -106700,13 +103310,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -106740,13 +103348,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -106761,13 +103367,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -107067,13 +103671,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -107092,8 +103694,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -107118,13 +103719,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -107139,8 +103738,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -107201,8 +103799,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.id->name A0 A1) :- (coq.string->name A0 A1).",
+                "rule_text": "(coq.id->name A0 A1) :- (coq.string->name A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -107240,13 +103837,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -107261,13 +103856,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -107282,13 +103875,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -107303,13 +103894,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -107381,13 +103970,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -107478,13 +104065,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -107518,13 +104103,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -107558,13 +104141,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -107579,13 +104160,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -107885,13 +104464,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -107910,8 +104487,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -107936,13 +104512,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -107957,8 +104531,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -107996,8 +104569,7 @@
       "Inference",
       {
         "current_goal_id": 1534,
-        "current_goal_text":
-          "std.do!\n [std.rev [] X153, \n  sigma c0 \\\n   pi c1 \\\n    decl c1 `TheType` (sort (typ «interleave_context.382»)) =>\n     factory-provides.base (indt «IsSelfA'.axioms_») X153 c1 [] (c0 c1) ,\n    mk-w-params.nil-name `TheType` (sort (typ «interleave_context.382»)) \n     c0 X144]",
+        "current_goal_text": "std.do!\n [std.rev [] X153, \n  sigma c0 \\\n   pi c1 \\\n    decl c1 `TheType` (sort (typ «interleave_context.382»)) =>\n     factory-provides.base (indt «IsSelfA'.axioms_») X153 c1 [] (c0 c1) ,\n    mk-w-params.nil-name `TheType` (sort (typ «interleave_context.382»)) \n     c0 X144]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -108006,8 +104578,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -108031,8 +104602,7 @@
               { "goal_text": "std.rev [] X153", "goal_id": 1537 },
               { "goal_text": "!", "goal_id": 1538 },
               {
-                "goal_text":
-                  "std.do!\n [sigma c0 \\\n   pi c1 \\\n    decl c1 `TheType` (sort (typ «interleave_context.382»)) =>\n     factory-provides.base (indt «IsSelfA'.axioms_») X153 c1 [] (c0 c1) ,\n    mk-w-params.nil-name `TheType` (sort (typ «interleave_context.382»)) \n     c0 X144]",
+                "goal_text": "std.do!\n [sigma c0 \\\n   pi c1 \\\n    decl c1 `TheType` (sort (typ «interleave_context.382»)) =>\n     factory-provides.base (indt «IsSelfA'.axioms_») X153 c1 [] (c0 c1) ,\n    mk-w-params.nil-name `TheType` (sort (typ «interleave_context.382»)) \n     c0 X144]",
                 "goal_id": 1539
               }
             ],
@@ -108083,13 +104653,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -108104,13 +104672,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -108125,13 +104691,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -108146,13 +104710,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -108224,13 +104786,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -108321,13 +104881,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -108361,13 +104919,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -108401,13 +104957,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -108422,13 +104976,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -108728,13 +105280,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -108753,8 +105303,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -108779,13 +105328,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -108800,8 +105347,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -108855,8 +105401,7 @@
                 }
               ],
               "events": [
-                [ "Assign", "A0 := []" ],
-                [ "Assign", "A1 := X153" ]
+                [ "Assign", "A0 := []" ], [ "Assign", "A1 := X153" ]
               ]
             },
             "siblings": [
@@ -108928,13 +105473,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -108949,13 +105492,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -108970,13 +105511,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -108991,13 +105530,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -109069,13 +105606,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -109166,13 +105701,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -109206,13 +105739,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -109246,13 +105777,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -109267,13 +105796,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -109573,13 +106100,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -109598,8 +106123,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -109624,13 +106148,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -109645,8 +106167,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -109700,8 +106221,7 @@
                 }
               ],
               "events": [
-                [ "Assign", "A0 := []" ],
-                [ "Assign", "X153 := []" ]
+                [ "Assign", "A0 := []" ], [ "Assign", "X153 := []" ]
               ]
             },
             "siblings": [],
@@ -109790,13 +106310,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -109811,13 +106329,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -109832,13 +106348,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -109853,13 +106367,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -109931,13 +106443,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -110028,13 +106538,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -110068,13 +106576,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -110108,13 +106614,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -110129,13 +106633,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -110435,13 +106937,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -110460,8 +106960,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -110486,13 +106985,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -110507,8 +107004,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -110546,8 +107042,7 @@
       "Inference",
       {
         "current_goal_id": 1539,
-        "current_goal_text":
-          "std.do!\n [sigma c0 \\\n   pi c1 \\\n    decl c1 `TheType` (sort (typ «interleave_context.382»)) =>\n     factory-provides.base (indt «IsSelfA'.axioms_») [] c1 [] (c0 c1) ,\n    mk-w-params.nil-name `TheType` (sort (typ «interleave_context.382»)) \n     c0 X144]",
+        "current_goal_text": "std.do!\n [sigma c0 \\\n   pi c1 \\\n    decl c1 `TheType` (sort (typ «interleave_context.382»)) =>\n     factory-provides.base (indt «IsSelfA'.axioms_») [] c1 [] (c0 c1) ,\n    mk-w-params.nil-name `TheType` (sort (typ «interleave_context.382»)) \n     c0 X144]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -110556,8 +107051,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -110579,8 +107073,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "sigma c0 \\\n pi c1 \\\n  decl c1 `TheType` (sort (typ «interleave_context.382»)) =>\n   factory-provides.base (indt «IsSelfA'.axioms_») [] c1 [] (c0 c1) ,\n  mk-w-params.nil-name `TheType` (sort (typ «interleave_context.382»)) c0 \n   X144",
+                "goal_text": "sigma c0 \\\n pi c1 \\\n  decl c1 `TheType` (sort (typ «interleave_context.382»)) =>\n   factory-provides.base (indt «IsSelfA'.axioms_») [] c1 [] (c0 c1) ,\n  mk-w-params.nil-name `TheType` (sort (typ «interleave_context.382»)) c0 \n   X144",
                 "goal_id": 1541
               },
               { "goal_text": "!", "goal_id": 1542 },
@@ -110652,13 +107145,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -110673,13 +107164,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -110694,13 +107183,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -110715,13 +107202,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -110793,13 +107278,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -110890,13 +107373,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -110930,13 +107411,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -110970,13 +107449,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -110991,13 +107468,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -111297,13 +107772,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -111322,8 +107795,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -111348,13 +107820,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -111369,8 +107839,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -111402,8 +107871,7 @@
       "Inference",
       {
         "current_goal_id": 1541,
-        "current_goal_text":
-          "sigma c0 \\\n pi c1 \\\n  decl c1 `TheType` (sort (typ «interleave_context.382»)) =>\n   factory-provides.base (indt «IsSelfA'.axioms_») [] c1 [] (c0 c1) ,\n  mk-w-params.nil-name `TheType` (sort (typ «interleave_context.382»)) c0 \n   X144",
+        "current_goal_text": "sigma c0 \\\n pi c1 \\\n  decl c1 `TheType` (sort (typ «interleave_context.382»)) =>\n   factory-provides.base (indt «IsSelfA'.axioms_») [] c1 [] (c0 c1) ,\n  mk-w-params.nil-name `TheType` (sort (typ «interleave_context.382»)) c0 \n   X144",
         "current_goal_predicate": "sigma",
         "failed_attempts": [],
         "successful_attempts": [
@@ -111414,8 +107882,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "pi c0 \\\n decl c0 `TheType` (sort (typ «interleave_context.382»)) =>\n  factory-provides.base (indt «IsSelfA'.axioms_») [] c0 [] (X154 c0) ,\n mk-w-params.nil-name `TheType` (sort (typ «interleave_context.382»)) X154 \n  X144",
+                "goal_text": "pi c0 \\\n decl c0 `TheType` (sort (typ «interleave_context.382»)) =>\n  factory-provides.base (indt «IsSelfA'.axioms_») [] c0 [] (X154 c0) ,\n mk-w-params.nil-name `TheType` (sort (typ «interleave_context.382»)) X154 \n  X144",
                 "goal_id": 1544
               }
             ],
@@ -111490,13 +107957,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -111511,13 +107976,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -111532,13 +107995,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -111553,13 +108014,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -111631,13 +108090,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -111728,13 +108185,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -111768,13 +108223,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -111808,13 +108261,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -111829,13 +108280,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -112135,13 +108584,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -112160,8 +108607,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -112186,13 +108632,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -112207,8 +108651,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -112240,8 +108683,7 @@
       "Inference",
       {
         "current_goal_id": 1544,
-        "current_goal_text":
-          "pi c0 \\\n decl c0 `TheType` (sort (typ «interleave_context.382»)) =>\n  factory-provides.base (indt «IsSelfA'.axioms_») [] c0 [] (X154 c0) ,\n mk-w-params.nil-name `TheType` (sort (typ «interleave_context.382»)) X154 \n  X144",
+        "current_goal_text": "pi c0 \\\n decl c0 `TheType` (sort (typ «interleave_context.382»)) =>\n  factory-provides.base (indt «IsSelfA'.axioms_») [] c0 [] (X154 c0) ,\n mk-w-params.nil-name `TheType` (sort (typ «interleave_context.382»)) X154 \n  X144",
         "current_goal_predicate": ",",
         "failed_attempts": [],
         "successful_attempts": [
@@ -112252,13 +108694,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "pi c0 \\\n decl c0 `TheType` (sort (typ «interleave_context.382»)) =>\n  factory-provides.base (indt «IsSelfA'.axioms_») [] c0 [] (X154 c0)",
+                "goal_text": "pi c0 \\\n decl c0 `TheType` (sort (typ «interleave_context.382»)) =>\n  factory-provides.base (indt «IsSelfA'.axioms_») [] c0 [] (X154 c0)",
                 "goal_id": 1545
               },
               {
-                "goal_text":
-                  "mk-w-params.nil-name `TheType` (sort (typ «interleave_context.382»)) X154 \n X144",
+                "goal_text": "mk-w-params.nil-name `TheType` (sort (typ «interleave_context.382»)) X154 \n X144",
                 "goal_id": 1546
               }
             ],
@@ -112338,13 +108778,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -112359,13 +108797,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -112380,13 +108816,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -112401,13 +108835,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -112479,13 +108911,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -112576,13 +109006,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -112616,13 +109044,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -112656,13 +109082,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -112677,13 +109101,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -112983,13 +109405,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -113008,8 +109428,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -113034,13 +109453,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -113055,8 +109472,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -113088,8 +109504,7 @@
       "Inference",
       {
         "current_goal_id": 1545,
-        "current_goal_text":
-          "pi c0 \\\n decl c0 `TheType` (sort (typ «interleave_context.382»)) =>\n  factory-provides.base (indt «IsSelfA'.axioms_») [] c0 [] (X154 c0)",
+        "current_goal_text": "pi c0 \\\n decl c0 `TheType` (sort (typ «interleave_context.382»)) =>\n  factory-provides.base (indt «IsSelfA'.axioms_») [] c0 [] (X154 c0)",
         "current_goal_predicate": "pi",
         "failed_attempts": [],
         "successful_attempts": [
@@ -113100,8 +109515,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "decl c0 `TheType` (sort (typ «interleave_context.382»)) =>\n factory-provides.base (indt «IsSelfA'.axioms_») [] c0 [] (X154 c0)",
+                "goal_text": "decl c0 `TheType` (sort (typ «interleave_context.382»)) =>\n factory-provides.base (indt «IsSelfA'.axioms_») [] c0 [] (X154 c0)",
                 "goal_id": 1547
               }
             ],
@@ -113186,13 +109600,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -113207,13 +109619,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -113228,13 +109638,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -113249,13 +109657,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -113327,13 +109733,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -113424,13 +109828,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -113464,13 +109866,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -113504,13 +109904,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -113525,13 +109923,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -113831,13 +110227,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -113856,8 +110250,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -113882,13 +110275,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -113903,8 +110294,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -113936,8 +110326,7 @@
       "Inference",
       {
         "current_goal_id": 1547,
-        "current_goal_text":
-          "decl c0 `TheType` (sort (typ «interleave_context.382»)) =>\n factory-provides.base (indt «IsSelfA'.axioms_») [] c0 [] (X154 c0)",
+        "current_goal_text": "decl c0 `TheType` (sort (typ «interleave_context.382»)) =>\n factory-provides.base (indt «IsSelfA'.axioms_») [] c0 [] (X154 c0)",
         "current_goal_predicate": "=>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -113948,8 +110337,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "factory-provides.base (indt «IsSelfA'.axioms_») [] c0 [] (X154 c0)",
+                "goal_text": "factory-provides.base (indt «IsSelfA'.axioms_») [] c0 [] (X154 c0)",
                 "goal_id": 1548
               }
             ],
@@ -114039,13 +110427,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -114060,13 +110446,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -114081,13 +110465,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -114102,13 +110484,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -114180,13 +110560,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -114277,13 +110655,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -114317,13 +110693,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -114357,13 +110731,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -114378,13 +110750,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -114684,13 +111054,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -114709,8 +111077,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -114735,13 +111102,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -114756,8 +111121,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -114789,8 +111153,7 @@
       "Inference",
       {
         "current_goal_id": 1548,
-        "current_goal_text":
-          "factory-provides.base (indt «IsSelfA'.axioms_») [] c0 [] (X154 c0)",
+        "current_goal_text": "factory-provides.base (indt «IsSelfA'.axioms_») [] c0 [] (X154 c0)",
         "current_goal_predicate": "factory-provides.base",
         "failed_attempts": [],
         "successful_attempts": [
@@ -114799,13 +111162,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                  "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 100,
                       "column": 0,
                       "character": 3290
@@ -114822,8 +111183,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.do!\n [std.findall (from (indt «IsSelfA'.axioms_») X155^1 X156^1) X157^1, \n  std.map X157^1 from_mixin X158^1, std.map X157^1 from_builder X159^1, \n  std.map2 X159^1 X158^1 (factory-provides.one [] c0) (X154 c0)]",
+                "goal_text": "std.do!\n [std.findall (from (indt «IsSelfA'.axioms_») X155^1 X156^1) X157^1, \n  std.map X157^1 from_mixin X158^1, std.map X157^1 from_builder X159^1, \n  std.map2 X159^1 X158^1 (factory-provides.one [] c0) (X154 c0)]",
                 "goal_id": 1549
               }
             ],
@@ -114836,13 +111196,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -114934,13 +111292,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -114955,13 +111311,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -114976,13 +111330,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -114997,13 +111349,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -115075,13 +111425,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -115172,13 +111520,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -115212,13 +111558,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -115252,13 +111596,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -115273,13 +111615,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -115579,13 +111919,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -115604,8 +111942,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -115630,13 +111967,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -115651,8 +111986,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -115684,8 +112018,7 @@
       "Inference",
       {
         "current_goal_id": 1549,
-        "current_goal_text":
-          "std.do!\n [std.findall (from (indt «IsSelfA'.axioms_») X155^1 X156^1) X157^1, \n  std.map X157^1 from_mixin X158^1, std.map X157^1 from_builder X159^1, \n  std.map2 X159^1 X158^1 (factory-provides.one [] c0) (X154 c0)]",
+        "current_goal_text": "std.do!\n [std.findall (from (indt «IsSelfA'.axioms_») X155^1 X156^1) X157^1, \n  std.map X157^1 from_mixin X158^1, std.map X157^1 from_builder X159^1, \n  std.map2 X159^1 X158^1 (factory-provides.one [] c0) (X154 c0)]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -115694,8 +112027,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -115720,14 +112052,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.findall (from (indt «IsSelfA'.axioms_») X155^1 X156^1) X157^1",
+                "goal_text": "std.findall (from (indt «IsSelfA'.axioms_») X155^1 X156^1) X157^1",
                 "goal_id": 1550
               },
               { "goal_text": "!", "goal_id": 1551 },
               {
-                "goal_text":
-                  "std.do!\n [std.map X157^1 from_mixin X158^1, std.map X157^1 from_builder X159^1, \n  std.map2 X159^1 X158^1 (factory-provides.one [] c0) (X154 c0)]",
+                "goal_text": "std.do!\n [std.map X157^1 from_mixin X158^1, std.map X157^1 from_builder X159^1, \n  std.map2 X159^1 X158^1 (factory-provides.one [] c0) (X154 c0)]",
                 "goal_id": 1552
               }
             ],
@@ -115759,13 +112089,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -115857,13 +112185,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -115878,13 +112204,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -115899,13 +112223,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -115920,13 +112242,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -115998,13 +112318,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -116095,13 +112413,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -116135,13 +112451,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -116175,13 +112489,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -116196,13 +112508,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -116502,13 +112812,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -116527,8 +112835,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -116553,13 +112860,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -116574,8 +112879,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -116607,8 +112911,7 @@
       "Inference",
       {
         "current_goal_id": 1550,
-        "current_goal_text":
-          "std.findall (from (indt «IsSelfA'.axioms_») X155^1 X156^1) X157^1",
+        "current_goal_text": "std.findall (from (indt «IsSelfA'.axioms_») X155^1 X156^1) X157^1",
         "current_goal_predicate": "std.findall",
         "failed_attempts": [],
         "successful_attempts": [
@@ -116617,8 +112920,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                  "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -116640,8 +112942,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "findall_solutions (from (indt «IsSelfA'.axioms_») X155^1 X156^1) X157^1",
+                "goal_text": "findall_solutions (from (indt «IsSelfA'.axioms_») X155^1 X156^1) X157^1",
                 "goal_id": 1553
               }
             ],
@@ -116654,8 +112955,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -116693,13 +112993,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -116791,13 +113089,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -116812,13 +113108,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -116833,13 +113127,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -116854,13 +113146,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -116932,13 +113222,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -117029,13 +113317,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -117069,13 +113355,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -117109,13 +113393,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -117130,13 +113412,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -117436,13 +113716,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -117461,8 +113739,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -117487,13 +113764,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -117508,8 +113783,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -117541,8 +113815,7 @@
       "Findall",
       {
         "findall_goal_id": 1553,
-        "findall_goal_text":
-          "findall_solutions (from (indt «IsSelfA'.axioms_») X155^1 X156^1) X157^1",
+        "findall_goal_text": "findall_solutions (from (indt «IsSelfA'.axioms_») X155^1 X156^1) X157^1",
         "findall_cards": [
           {
             "step_id": 0,
@@ -117563,16 +113836,14 @@
               "Inference",
               {
                 "current_goal_id": 1555,
-                "current_goal_text":
-                  "from (indt «IsSelfA'.axioms_») X0^1 X1^1",
+                "current_goal_text": "from (indt «IsSelfA'.axioms_») X0^1 X1^1",
                 "current_goal_predicate": "from",
                 "failed_attempts": [
                   {
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt «A.axioms_») (indt «HasA.axioms_») \n  (const «A.interleave_context_HasA_mixin»)) :- .",
+                        "rule_text": "(from (indt «A.axioms_») (indt «HasA.axioms_») \n  (const «A.interleave_context_HasA_mixin»)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117595,8 +113866,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt «HasB.axioms_») (indt «HasB.axioms_») \n  (const «HasB.identity_builder»)) :- .",
+                        "rule_text": "(from (indt «HasB.axioms_») (indt «HasB.axioms_») \n  (const «HasB.identity_builder»)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117619,8 +113889,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt «B.axioms_») (indt «HasB.axioms_») \n  (const «B.interleave_context_HasB_mixin»)) :- .",
+                        "rule_text": "(from (indt «B.axioms_») (indt «HasB.axioms_») \n  (const «B.interleave_context_HasB_mixin»)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117643,8 +113912,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt «IsSelfA.axioms_») (indt «IsSelfA.axioms_») \n  (const «IsSelfA.identity_builder»)) :- .",
+                        "rule_text": "(from (indt «IsSelfA.axioms_») (indt «IsSelfA.axioms_») \n  (const «IsSelfA.identity_builder»)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117667,8 +113935,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt «SelfA.axioms_») (indt «HasA.axioms_») \n  (const «SelfA.interleave_context_HasA_mixin»)) :- .",
+                        "rule_text": "(from (indt «SelfA.axioms_») (indt «HasA.axioms_») \n  (const «SelfA.interleave_context_HasA_mixin»)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117691,8 +113958,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt «SelfA.axioms_») (indt «HasB.axioms_») \n  (const «SelfA.interleave_context_HasB_mixin»)) :- .",
+                        "rule_text": "(from (indt «SelfA.axioms_») (indt «HasB.axioms_») \n  (const «SelfA.interleave_context_HasB_mixin»)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117715,8 +113981,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt «SelfA.axioms_») (indt «IsSelfA.axioms_») \n  (const «SelfA.interleave_context_IsSelfA_mixin»)) :- .",
+                        "rule_text": "(from (indt «SelfA.axioms_») (indt «IsSelfA.axioms_») \n  (const «SelfA.interleave_context_IsSelfA_mixin»)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117739,8 +114004,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n  (const «Builders_18.HB_unnamed_factory_24»)) :- .",
+                        "rule_text": "(from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n  (const «Builders_18.HB_unnamed_factory_24»)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117767,8 +114031,7 @@
                       "rule": [
                         "UserRule",
                         {
-                          "rule_text":
-                            "(from (indt «HasA.axioms_») (indt «HasA.axioms_») \n  (const «HasA.identity_builder»)) :- .",
+                          "rule_text": "(from (indt «HasA.axioms_») (indt «HasA.axioms_») \n  (const «HasA.identity_builder»)) :- .",
                           "rule_loc": [
                             "File",
                             {
@@ -117797,8 +114060,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt «HasA.axioms_») (indt «HasA.axioms_») \n  (const «HasA.identity_builder»)) :- .",
+                        "rule_text": "(from (indt «HasA.axioms_») (indt «HasA.axioms_») \n  (const «HasA.identity_builder»)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117825,8 +114087,7 @@
               "Inference",
               {
                 "current_goal_id": 1555,
-                "current_goal_text":
-                  "from (indt «IsSelfA'.axioms_») X0^1 X1^1",
+                "current_goal_text": "from (indt «IsSelfA'.axioms_») X0^1 X1^1",
                 "current_goal_predicate": "from",
                 "failed_attempts": [],
                 "successful_attempts": [
@@ -117835,8 +114096,7 @@
                       "rule": [
                         "UserRule",
                         {
-                          "rule_text":
-                            "(from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n  (const «Builders_18.HB_unnamed_factory_22»)) :- .",
+                          "rule_text": "(from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n  (const «Builders_18.HB_unnamed_factory_22»)) :- .",
                           "rule_loc": [
                             "File",
                             {
@@ -117866,8 +114126,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n  (const «Builders_18.HB_unnamed_factory_22»)) :- .",
+                        "rule_text": "(from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n  (const «Builders_18.HB_unnamed_factory_22»)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117894,8 +114153,7 @@
               "Inference",
               {
                 "current_goal_id": 1555,
-                "current_goal_text":
-                  "from (indt «IsSelfA'.axioms_») X0^1 X1^1",
+                "current_goal_text": "from (indt «IsSelfA'.axioms_») X0^1 X1^1",
                 "current_goal_predicate": "from",
                 "failed_attempts": [],
                 "successful_attempts": [
@@ -117904,8 +114162,7 @@
                       "rule": [
                         "UserRule",
                         {
-                          "rule_text":
-                            "(from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n  (const «Builders_18.HB_unnamed_factory_20»)) :- .",
+                          "rule_text": "(from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n  (const «Builders_18.HB_unnamed_factory_20»)) :- .",
                           "rule_loc": [
                             "File",
                             {
@@ -117935,8 +114192,7 @@
                     "rule": [
                       "UserRule",
                       {
-                        "rule_text":
-                          "(from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n  (const «Builders_18.HB_unnamed_factory_20»)) :- .",
+                        "rule_text": "(from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n  (const «Builders_18.HB_unnamed_factory_20»)) :- .",
                         "rule_loc": [
                           "File",
                           {
@@ -117970,8 +114226,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -118009,13 +114264,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -118107,13 +114360,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -118128,13 +114379,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -118149,13 +114398,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -118170,13 +114417,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -118248,13 +114493,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -118345,13 +114588,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -118385,13 +114626,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -118425,13 +114664,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -118446,13 +114683,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -118752,13 +114987,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -118777,8 +115010,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -118803,13 +115035,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -118824,8 +115054,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -118863,8 +115092,7 @@
       "Inference",
       {
         "current_goal_id": 1552,
-        "current_goal_text":
-          "std.do!\n [std.map\n   [from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n     (const «Builders_18.HB_unnamed_factory_24»), \n    from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n     (const «Builders_18.HB_unnamed_factory_22»), \n    from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n     (const «Builders_18.HB_unnamed_factory_20»)] from_mixin X158^1, \n  std.map\n   [from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n     (const «Builders_18.HB_unnamed_factory_24»), \n    from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n     (const «Builders_18.HB_unnamed_factory_22»), \n    from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n     (const «Builders_18.HB_unnamed_factory_20»)] from_builder X159^1, \n  std.map2 X159^1 X158^1 (factory-provides.one [] c0) (X154 c0)]",
+        "current_goal_text": "std.do!\n [std.map\n   [from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n     (const «Builders_18.HB_unnamed_factory_24»), \n    from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n     (const «Builders_18.HB_unnamed_factory_22»), \n    from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n     (const «Builders_18.HB_unnamed_factory_20»)] from_mixin X158^1, \n  std.map\n   [from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n     (const «Builders_18.HB_unnamed_factory_24»), \n    from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n     (const «Builders_18.HB_unnamed_factory_22»), \n    from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n     (const «Builders_18.HB_unnamed_factory_20»)] from_builder X159^1, \n  std.map2 X159^1 X158^1 (factory-provides.one [] c0) (X154 c0)]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -118873,8 +115101,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -118899,14 +115126,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.map\n [from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_24»), \n  from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»), \n  from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_mixin X158^1",
+                "goal_text": "std.map\n [from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_24»), \n  from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»), \n  from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_mixin X158^1",
                 "goal_id": 1556
               },
               { "goal_text": "!", "goal_id": 1557 },
               {
-                "goal_text":
-                  "std.do!\n [std.map\n   [from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n     (const «Builders_18.HB_unnamed_factory_24»), \n    from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n     (const «Builders_18.HB_unnamed_factory_22»), \n    from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n     (const «Builders_18.HB_unnamed_factory_20»)] from_builder X159^1, \n  std.map2 X159^1 X158^1 (factory-provides.one [] c0) (X154 c0)]",
+                "goal_text": "std.do!\n [std.map\n   [from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n     (const «Builders_18.HB_unnamed_factory_24»), \n    from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n     (const «Builders_18.HB_unnamed_factory_22»), \n    from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n     (const «Builders_18.HB_unnamed_factory_20»)] from_builder X159^1, \n  std.map2 X159^1 X158^1 (factory-provides.one [] c0) (X154 c0)]",
                 "goal_id": 1558
               }
             ],
@@ -118957,13 +115182,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -119055,13 +115278,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -119076,13 +115297,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -119097,13 +115316,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -119118,13 +115335,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -119196,13 +115411,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -119293,13 +115506,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -119333,13 +115544,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -119373,13 +115582,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -119394,13 +115601,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -119700,13 +115905,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -119725,8 +115928,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -119751,13 +115953,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -119772,8 +115972,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -119805,8 +116004,7 @@
       "Inference",
       {
         "current_goal_id": 1556,
-        "current_goal_text":
-          "std.map\n [from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_24»), \n  from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»), \n  from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_mixin X158^1",
+        "current_goal_text": "std.map\n [from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_24»), \n  from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»), \n  from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_mixin X158^1",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -119815,8 +116013,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -119843,13 +116040,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "from_mixin\n (from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_24»)) X160^1",
+                "goal_text": "from_mixin\n (from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_24»)) X160^1",
                 "goal_id": 1559
               },
               {
-                "goal_text":
-                  "std.map\n [from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»), \n  from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_mixin X161^1",
+                "goal_text": "std.map\n [from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»), \n  from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_mixin X161^1",
                 "goal_id": 1560
               }
             ],
@@ -119862,8 +116057,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -119920,13 +116114,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -120018,13 +116210,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -120039,13 +116229,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -120060,13 +116248,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -120081,13 +116267,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -120159,13 +116343,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -120256,13 +116438,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -120296,13 +116476,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -120336,13 +116514,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -120357,13 +116533,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -120663,13 +116837,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -120688,8 +116860,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -120714,13 +116885,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -120735,8 +116904,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -120768,8 +116936,7 @@
       "Inference",
       {
         "current_goal_id": 1559,
-        "current_goal_text":
-          "from_mixin\n (from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_24»)) X160^1",
+        "current_goal_text": "from_mixin\n (from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_24»)) X160^1",
         "current_goal_predicate": "from_mixin",
         "failed_attempts": [],
         "successful_attempts": [
@@ -120782,8 +116949,7 @@
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 12,
                       "column": 0,
                       "character": 414
@@ -120810,8 +116976,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 12,
                     "column": 0,
                     "character": 414
@@ -120826,8 +116991,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -120884,13 +117048,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -120982,13 +117144,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -121003,13 +117163,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -121024,13 +117182,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -121045,13 +117201,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -121123,13 +117277,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -121220,13 +117372,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -121260,13 +117410,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -121300,13 +117448,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -121321,13 +117467,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -121627,13 +117771,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -121652,8 +117794,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -121678,13 +117819,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -121699,8 +117838,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -121732,8 +117870,7 @@
       "Inference",
       {
         "current_goal_id": 1560,
-        "current_goal_text":
-          "std.map\n [from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»), \n  from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_mixin X161^1",
+        "current_goal_text": "std.map\n [from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»), \n  from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_mixin X161^1",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -121742,8 +117879,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -121770,13 +117906,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "from_mixin\n (from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»)) X162^1",
+                "goal_text": "from_mixin\n (from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»)) X162^1",
                 "goal_id": 1561
               },
               {
-                "goal_text":
-                  "std.map\n [from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_mixin X163^1",
+                "goal_text": "std.map\n [from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_mixin X163^1",
                 "goal_id": 1562
               }
             ],
@@ -121789,8 +117923,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -121809,8 +117942,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -121867,13 +117999,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -121965,13 +118095,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -121986,13 +118114,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -122007,13 +118133,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -122028,13 +118152,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -122106,13 +118228,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -122203,13 +118323,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -122243,13 +118361,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -122283,13 +118399,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -122304,13 +118418,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -122610,13 +118722,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -122635,8 +118745,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -122661,13 +118770,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -122682,8 +118789,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -122715,8 +118821,7 @@
       "Inference",
       {
         "current_goal_id": 1561,
-        "current_goal_text":
-          "from_mixin\n (from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»)) X162^1",
+        "current_goal_text": "from_mixin\n (from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»)) X162^1",
         "current_goal_predicate": "from_mixin",
         "failed_attempts": [],
         "successful_attempts": [
@@ -122729,8 +118834,7 @@
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 12,
                       "column": 0,
                       "character": 414
@@ -122757,8 +118861,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 12,
                     "column": 0,
                     "character": 414
@@ -122773,8 +118876,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -122793,8 +118895,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -122851,13 +118952,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -122949,13 +119048,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -122970,13 +119067,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -122991,13 +119086,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -123012,13 +119105,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -123090,13 +119181,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -123187,13 +119276,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -123227,13 +119314,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -123267,13 +119352,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -123288,13 +119371,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -123594,13 +119675,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -123619,8 +119698,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -123645,13 +119723,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -123666,8 +119742,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -123699,8 +119774,7 @@
       "Inference",
       {
         "current_goal_id": 1562,
-        "current_goal_text":
-          "std.map\n [from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_mixin X163^1",
+        "current_goal_text": "std.map\n [from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_mixin X163^1",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -123709,8 +119783,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -123734,8 +119807,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "from_mixin\n (from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)) X164^1",
+                "goal_text": "from_mixin\n (from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)) X164^1",
                 "goal_id": 1563
               },
               {
@@ -123752,8 +119824,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -123772,8 +119843,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -123792,8 +119862,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -123850,13 +119919,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -123948,13 +120015,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -123969,13 +120034,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -123990,13 +120053,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -124011,13 +120072,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -124089,13 +120148,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -124186,13 +120243,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -124226,13 +120281,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -124266,13 +120319,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -124287,13 +120338,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -124593,13 +120642,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -124618,8 +120665,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -124644,13 +120690,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -124665,8 +120709,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -124698,8 +120741,7 @@
       "Inference",
       {
         "current_goal_id": 1563,
-        "current_goal_text":
-          "from_mixin\n (from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)) X164^1",
+        "current_goal_text": "from_mixin\n (from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)) X164^1",
         "current_goal_predicate": "from_mixin",
         "failed_attempts": [],
         "successful_attempts": [
@@ -124712,8 +120754,7 @@
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 12,
                       "column": 0,
                       "character": 414
@@ -124740,8 +120781,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 12,
                     "column": 0,
                     "character": 414
@@ -124756,8 +120796,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -124776,8 +120815,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -124796,8 +120834,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -124854,13 +120891,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -124952,13 +120987,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -124973,13 +121006,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -124994,13 +121025,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -125015,13 +121044,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -125093,13 +121120,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -125190,13 +121215,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -125230,13 +121253,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -125270,13 +121291,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -125291,13 +121310,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -125597,13 +121614,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -125622,8 +121637,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -125648,13 +121662,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -125669,8 +121681,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -125754,8 +121765,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -125774,8 +121784,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -125794,8 +121803,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -125852,13 +121860,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -125950,13 +121956,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -125971,13 +121975,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -125992,13 +121994,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -126013,13 +122013,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -126091,13 +122089,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -126188,13 +122184,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -126228,13 +122222,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -126268,13 +122260,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -126289,13 +122279,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -126595,13 +122583,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -126620,8 +122606,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -126646,13 +122631,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -126667,8 +122650,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -126706,8 +122688,7 @@
       "Inference",
       {
         "current_goal_id": 1558,
-        "current_goal_text":
-          "std.do!\n [std.map\n   [from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n     (const «Builders_18.HB_unnamed_factory_24»), \n    from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n     (const «Builders_18.HB_unnamed_factory_22»), \n    from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n     (const «Builders_18.HB_unnamed_factory_20»)] from_builder X159^1, \n  std.map2 X159^1 \n   [indt «IsSelfA.axioms_», indt «HasB.axioms_», indt «HasA.axioms_»] \n   (factory-provides.one [] c0) (X154 c0)]",
+        "current_goal_text": "std.do!\n [std.map\n   [from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n     (const «Builders_18.HB_unnamed_factory_24»), \n    from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n     (const «Builders_18.HB_unnamed_factory_22»), \n    from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n     (const «Builders_18.HB_unnamed_factory_20»)] from_builder X159^1, \n  std.map2 X159^1 \n   [indt «IsSelfA.axioms_», indt «HasB.axioms_», indt «HasA.axioms_»] \n   (factory-provides.one [] c0) (X154 c0)]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -126716,8 +122697,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -126742,14 +122722,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.map\n [from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_24»), \n  from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»), \n  from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_builder X159^1",
+                "goal_text": "std.map\n [from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_24»), \n  from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»), \n  from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_builder X159^1",
                 "goal_id": 1565
               },
               { "goal_text": "!", "goal_id": 1566 },
               {
-                "goal_text":
-                  "std.do!\n [std.map2 X159^1 \n   [indt «IsSelfA.axioms_», indt «HasB.axioms_», indt «HasA.axioms_»] \n   (factory-provides.one [] c0) (X154 c0)]",
+                "goal_text": "std.do!\n [std.map2 X159^1 \n   [indt «IsSelfA.axioms_», indt «HasB.axioms_», indt «HasA.axioms_»] \n   (factory-provides.one [] c0) (X154 c0)]",
                 "goal_id": 1567
               }
             ],
@@ -126819,13 +122797,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -126917,13 +122893,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -126938,13 +122912,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -126959,13 +122931,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -126980,13 +122950,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -127058,13 +123026,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -127155,13 +123121,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -127195,13 +123159,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -127235,13 +123197,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -127256,13 +123216,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -127562,13 +123520,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -127587,8 +123543,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -127613,13 +123568,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -127634,8 +123587,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -127667,8 +123619,7 @@
       "Inference",
       {
         "current_goal_id": 1565,
-        "current_goal_text":
-          "std.map\n [from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_24»), \n  from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»), \n  from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_builder X159^1",
+        "current_goal_text": "std.map\n [from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_24»), \n  from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»), \n  from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_builder X159^1",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -127677,8 +123628,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -127705,13 +123655,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "from_builder\n (from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_24»)) X166^1",
+                "goal_text": "from_builder\n (from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_24»)) X166^1",
                 "goal_id": 1568
               },
               {
-                "goal_text":
-                  "std.map\n [from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»), \n  from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_builder X167^1",
+                "goal_text": "std.map\n [from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»), \n  from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_builder X167^1",
                 "goal_id": 1569
               }
             ],
@@ -127724,8 +123672,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -127801,13 +123748,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -127899,13 +123844,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -127920,13 +123863,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -127941,13 +123882,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -127962,13 +123901,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -128040,13 +123977,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -128137,13 +124072,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -128177,13 +124110,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -128217,13 +124148,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -128238,13 +124167,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -128544,13 +124471,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -128569,8 +124494,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -128595,13 +124519,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -128616,8 +124538,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -128649,8 +124570,7 @@
       "Inference",
       {
         "current_goal_id": 1568,
-        "current_goal_text":
-          "from_builder\n (from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_24»)) X166^1",
+        "current_goal_text": "from_builder\n (from (indt «IsSelfA'.axioms_») (indt «IsSelfA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_24»)) X166^1",
         "current_goal_predicate": "from_builder",
         "failed_attempts": [],
         "successful_attempts": [
@@ -128659,13 +124579,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(from_builder (from _ _ A0) (global A0)) :- .",
+                  "rule_text": "(from_builder (from _ _ A0) (global A0)) :- .",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 15,
                       "column": 0,
                       "character": 476
@@ -128698,8 +124616,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 15,
                     "column": 0,
                     "character": 476
@@ -128714,8 +124631,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -128791,13 +124707,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -128889,13 +124803,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -128910,13 +124822,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -128931,13 +124841,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -128952,13 +124860,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -129030,13 +124936,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -129127,13 +125031,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -129167,13 +125069,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -129207,13 +125107,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -129228,13 +125126,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -129534,13 +125430,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -129559,8 +125453,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -129585,13 +125478,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -129606,8 +125497,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -129639,8 +125529,7 @@
       "Inference",
       {
         "current_goal_id": 1569,
-        "current_goal_text":
-          "std.map\n [from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»), \n  from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_builder X167^1",
+        "current_goal_text": "std.map\n [from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»), \n  from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_builder X167^1",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -129649,8 +125538,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -129677,13 +125565,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "from_builder\n (from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»)) X168^1",
+                "goal_text": "from_builder\n (from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»)) X168^1",
                 "goal_id": 1570
               },
               {
-                "goal_text":
-                  "std.map\n [from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_builder X169^1",
+                "goal_text": "std.map\n [from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_builder X169^1",
                 "goal_id": 1571
               }
             ],
@@ -129696,8 +125582,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -129716,8 +125601,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -129793,13 +125677,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -129891,13 +125773,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -129912,13 +125792,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -129933,13 +125811,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -129954,13 +125830,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -130032,13 +125906,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -130129,13 +126001,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -130169,13 +126039,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -130209,13 +126077,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -130230,13 +126096,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -130536,13 +126400,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -130561,8 +126423,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -130587,13 +126448,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -130608,8 +126467,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -130641,8 +126499,7 @@
       "Inference",
       {
         "current_goal_id": 1570,
-        "current_goal_text":
-          "from_builder\n (from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»)) X168^1",
+        "current_goal_text": "from_builder\n (from (indt «IsSelfA'.axioms_») (indt «HasB.axioms_») \n   (const «Builders_18.HB_unnamed_factory_22»)) X168^1",
         "current_goal_predicate": "from_builder",
         "failed_attempts": [],
         "successful_attempts": [
@@ -130651,13 +126508,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(from_builder (from _ _ A0) (global A0)) :- .",
+                  "rule_text": "(from_builder (from _ _ A0) (global A0)) :- .",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 15,
                       "column": 0,
                       "character": 476
@@ -130690,8 +126545,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 15,
                     "column": 0,
                     "character": 476
@@ -130706,8 +126560,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -130726,8 +126579,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -130803,13 +126655,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -130901,13 +126751,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -130922,13 +126770,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -130943,13 +126789,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -130964,13 +126808,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -131042,13 +126884,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -131139,13 +126979,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -131179,13 +127017,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -131219,13 +127055,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -131240,13 +127074,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -131546,13 +127378,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -131571,8 +127401,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -131597,13 +127426,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -131618,8 +127445,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -131651,8 +127477,7 @@
       "Inference",
       {
         "current_goal_id": 1571,
-        "current_goal_text":
-          "std.map\n [from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_builder X169^1",
+        "current_goal_text": "std.map\n [from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)] from_builder X169^1",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -131661,8 +127486,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -131686,8 +127510,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "from_builder\n (from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)) X170^1",
+                "goal_text": "from_builder\n (from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)) X170^1",
                 "goal_id": 1572
               },
               {
@@ -131704,8 +127527,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -131724,8 +127546,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -131744,8 +127565,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -131821,13 +127641,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -131919,13 +127737,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -131940,13 +127756,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -131961,13 +127775,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -131982,13 +127794,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -132060,13 +127870,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -132157,13 +127965,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -132197,13 +128003,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -132237,13 +128041,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -132258,13 +128060,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -132564,13 +128364,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -132589,8 +128387,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -132615,13 +128412,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -132636,8 +128431,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -132669,8 +128463,7 @@
       "Inference",
       {
         "current_goal_id": 1572,
-        "current_goal_text":
-          "from_builder\n (from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)) X170^1",
+        "current_goal_text": "from_builder\n (from (indt «IsSelfA'.axioms_») (indt «HasA.axioms_») \n   (const «Builders_18.HB_unnamed_factory_20»)) X170^1",
         "current_goal_predicate": "from_builder",
         "failed_attempts": [],
         "successful_attempts": [
@@ -132679,13 +128472,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(from_builder (from _ _ A0) (global A0)) :- .",
+                  "rule_text": "(from_builder (from _ _ A0) (global A0)) :- .",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 15,
                       "column": 0,
                       "character": 476
@@ -132718,8 +128509,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 15,
                     "column": 0,
                     "character": 476
@@ -132734,8 +128524,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -132754,8 +128543,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -132774,8 +128562,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -132851,13 +128638,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -132949,13 +128734,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -132970,13 +128753,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -132991,13 +128772,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -133012,13 +128791,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -133090,13 +128867,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -133187,13 +128962,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -133227,13 +129000,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -133267,13 +129038,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -133288,13 +129057,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -133594,13 +129361,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -133619,8 +129384,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -133645,13 +129409,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -133666,8 +129428,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -133751,8 +129512,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -133771,8 +129531,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -133791,8 +129550,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -133868,13 +129626,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -133966,13 +129722,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -133987,13 +129741,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -134008,13 +129760,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -134029,13 +129779,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -134107,13 +129855,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -134204,13 +129950,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -134244,13 +129988,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -134284,13 +130026,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -134305,13 +130045,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -134611,13 +130349,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -134636,8 +130372,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -134662,13 +130397,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -134683,8 +130416,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -134722,8 +130454,7 @@
       "Inference",
       {
         "current_goal_id": 1567,
-        "current_goal_text":
-          "std.do!\n [std.map2\n   [global (const «Builders_18.HB_unnamed_factory_24»), \n    global (const «Builders_18.HB_unnamed_factory_22»), \n    global (const «Builders_18.HB_unnamed_factory_20»)] \n   [indt «IsSelfA.axioms_», indt «HasB.axioms_», indt «HasA.axioms_»] \n   (factory-provides.one [] c0) (X154 c0)]",
+        "current_goal_text": "std.do!\n [std.map2\n   [global (const «Builders_18.HB_unnamed_factory_24»), \n    global (const «Builders_18.HB_unnamed_factory_22»), \n    global (const «Builders_18.HB_unnamed_factory_20»)] \n   [indt «IsSelfA.axioms_», indt «HasB.axioms_», indt «HasA.axioms_»] \n   (factory-provides.one [] c0) (X154 c0)]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -134732,8 +130463,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -134755,8 +130485,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.map2\n [global (const «Builders_18.HB_unnamed_factory_24»), \n  global (const «Builders_18.HB_unnamed_factory_22»), \n  global (const «Builders_18.HB_unnamed_factory_20»)] \n [indt «IsSelfA.axioms_», indt «HasB.axioms_», indt «HasA.axioms_»] \n (factory-provides.one [] c0) (X154 c0)",
+                "goal_text": "std.map2\n [global (const «Builders_18.HB_unnamed_factory_24»), \n  global (const «Builders_18.HB_unnamed_factory_22»), \n  global (const «Builders_18.HB_unnamed_factory_20»)] \n [indt «IsSelfA.axioms_», indt «HasB.axioms_», indt «HasA.axioms_»] \n (factory-provides.one [] c0) (X154 c0)",
                 "goal_id": 1574
               },
               { "goal_text": "!", "goal_id": 1575 },
@@ -134847,13 +130576,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -134945,13 +130672,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -134966,13 +130691,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -134987,13 +130710,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -135008,13 +130729,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -135086,13 +130805,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -135183,13 +130900,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -135223,13 +130938,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -135263,13 +130976,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -135284,13 +130995,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -135590,13 +131299,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -135615,8 +131322,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -135641,13 +131347,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -135662,8 +131366,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -135695,8 +131398,7 @@
       "Inference",
       {
         "current_goal_id": 1574,
-        "current_goal_text":
-          "std.map2\n [global (const «Builders_18.HB_unnamed_factory_24»), \n  global (const «Builders_18.HB_unnamed_factory_22»), \n  global (const «Builders_18.HB_unnamed_factory_20»)] \n [indt «IsSelfA.axioms_», indt «HasB.axioms_», indt «HasA.axioms_»] \n (factory-provides.one [] c0) (X154 c0)",
+        "current_goal_text": "std.map2\n [global (const «Builders_18.HB_unnamed_factory_24»), \n  global (const «Builders_18.HB_unnamed_factory_22»), \n  global (const «Builders_18.HB_unnamed_factory_20»)] \n [indt «IsSelfA.axioms_», indt «HasB.axioms_», indt «HasA.axioms_»] \n (factory-provides.one [] c0) (X154 c0)",
         "current_goal_predicate": "std.map2",
         "failed_attempts": [],
         "successful_attempts": [
@@ -135705,8 +131407,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                  "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                   "rule_loc": [
                     "File",
                     {
@@ -135739,13 +131440,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "factory-provides.one [] c0 \n (global (const «Builders_18.HB_unnamed_factory_24»)) \n (indt «IsSelfA.axioms_») X173^1",
+                "goal_text": "factory-provides.one [] c0 \n (global (const «Builders_18.HB_unnamed_factory_24»)) \n (indt «IsSelfA.axioms_») X173^1",
                 "goal_id": 1577
               },
               {
-                "goal_text":
-                  "std.map2\n [global (const «Builders_18.HB_unnamed_factory_22»), \n  global (const «Builders_18.HB_unnamed_factory_20»)] \n [indt «HasB.axioms_», indt «HasA.axioms_»] (factory-provides.one [] c0) \n X174^1",
+                "goal_text": "std.map2\n [global (const «Builders_18.HB_unnamed_factory_22»), \n  global (const «Builders_18.HB_unnamed_factory_20»)] \n [indt «HasB.axioms_», indt «HasA.axioms_»] (factory-provides.one [] c0) \n X174^1",
                 "goal_id": 1578
               }
             ],
@@ -135758,8 +131457,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -135854,13 +131552,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -135952,13 +131648,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -135973,13 +131667,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -135994,13 +131686,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -136015,13 +131705,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -136093,13 +131781,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -136190,13 +131876,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -136230,13 +131914,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -136270,13 +131952,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -136291,13 +131971,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -136597,13 +132275,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -136622,8 +132298,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -136648,13 +132323,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -136669,8 +132342,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -136702,8 +132374,7 @@
       "Inference",
       {
         "current_goal_id": 1577,
-        "current_goal_text":
-          "factory-provides.one [] c0 \n (global (const «Builders_18.HB_unnamed_factory_24»)) \n (indt «IsSelfA.axioms_») X173^1",
+        "current_goal_text": "factory-provides.one [] c0 \n (global (const «Builders_18.HB_unnamed_factory_24»)) \n (indt «IsSelfA.axioms_») X173^1",
         "current_goal_predicate": "factory-provides.one",
         "failed_attempts": [],
         "successful_attempts": [
@@ -136712,13 +132383,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                  "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 108,
                       "column": 0,
                       "character": 3601
@@ -136742,8 +132411,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.do!\n [std.assert-ok!\n   (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_24»)) \n     X176^1) Builder illtyped, \n  (coq.subst-prod [] X176^1 X177^1 , coq.subst-prod [c0] X177^1 X178^1), \n  std.assert! (extract-conclusion-params c0 X178^1 X175^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
+                "goal_text": "std.do!\n [std.assert-ok!\n   (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_24»)) \n     X176^1) Builder illtyped, \n  (coq.subst-prod [] X176^1 X177^1 , coq.subst-prod [c0] X177^1 X178^1), \n  std.assert! (extract-conclusion-params c0 X178^1 X175^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
                 "goal_id": 1579
               }
             ],
@@ -136756,13 +132424,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -136777,8 +132443,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -136873,13 +132538,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -136971,13 +132634,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -136992,13 +132653,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -137013,13 +132672,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -137034,13 +132691,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -137112,13 +132767,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -137209,13 +132862,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -137249,13 +132900,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -137289,13 +132938,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -137310,13 +132957,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -137616,13 +133261,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -137641,8 +133284,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -137667,13 +133309,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -137688,8 +133328,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -137721,8 +133360,7 @@
       "Inference",
       {
         "current_goal_id": 1579,
-        "current_goal_text":
-          "std.do!\n [std.assert-ok!\n   (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_24»)) \n     X176^1) Builder illtyped, \n  (coq.subst-prod [] X176^1 X177^1 , coq.subst-prod [c0] X177^1 X178^1), \n  std.assert! (extract-conclusion-params c0 X178^1 X175^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
+        "current_goal_text": "std.do!\n [std.assert-ok!\n   (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_24»)) \n     X176^1) Builder illtyped, \n  (coq.subst-prod [] X176^1 X177^1 , coq.subst-prod [c0] X177^1 X178^1), \n  std.assert! (extract-conclusion-params c0 X178^1 X175^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -137731,8 +133369,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -137757,14 +133394,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.assert-ok!\n (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_24»)) X176^1) \n Builder illtyped",
+                "goal_text": "std.assert-ok!\n (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_24»)) X176^1) \n Builder illtyped",
                 "goal_id": 1580
               },
               { "goal_text": "!", "goal_id": 1581 },
               {
-                "goal_text":
-                  "std.do!\n [(coq.subst-prod [] X176^1 X177^1 , coq.subst-prod [c0] X177^1 X178^1), \n  std.assert! (extract-conclusion-params c0 X178^1 X175^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
+                "goal_text": "std.do!\n [(coq.subst-prod [] X176^1 X177^1 , coq.subst-prod [c0] X177^1 X178^1), \n  std.assert! (extract-conclusion-params c0 X178^1 X175^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
                 "goal_id": 1582
               }
             ],
@@ -137796,13 +133431,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -137817,8 +133450,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -137913,13 +133545,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -138011,13 +133641,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -138032,13 +133660,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -138053,13 +133679,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -138074,13 +133698,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -138152,13 +133774,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -138249,13 +133869,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -138289,13 +133907,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -138329,13 +133945,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -138350,13 +133964,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -138656,13 +134268,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -138681,8 +134291,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -138707,13 +134316,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -138728,8 +134335,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -138761,8 +134367,7 @@
       "Inference",
       {
         "current_goal_id": 1580,
-        "current_goal_text":
-          "std.assert-ok!\n (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_24»)) X176^1) \n Builder illtyped",
+        "current_goal_text": "std.assert-ok!\n (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_24»)) X176^1) \n Builder illtyped",
         "current_goal_predicate": "std.assert-ok!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -138771,8 +134376,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                  "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -138794,14 +134398,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.typecheck (global (const «Builders_18.HB_unnamed_factory_24»)) X176^1 \n X179^1",
+                "goal_text": "coq.typecheck (global (const «Builders_18.HB_unnamed_factory_24»)) X176^1 \n X179^1",
                 "goal_id": 1583
               },
               { "goal_text": "!", "goal_id": 1584 },
               {
-                "goal_text":
-                  "X179^1 = ok ;\n X179^1 = error X180^1 , std.fatal-error-w-data Builder illtyped X180^1",
+                "goal_text": "X179^1 = ok ;\n X179^1 = error X180^1 , std.fatal-error-w-data Builder illtyped X180^1",
                 "goal_id": 1585
               },
               { "goal_text": "!", "goal_id": 1586 }
@@ -138815,8 +134417,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -138854,13 +134455,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -138875,8 +134474,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -138971,13 +134569,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -139069,13 +134665,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -139090,13 +134684,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -139111,13 +134703,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -139132,13 +134722,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -139210,13 +134798,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -139307,13 +134893,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -139347,13 +134931,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -139387,13 +134969,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -139408,13 +134988,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -139714,13 +135292,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -139739,8 +135315,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -139765,13 +135340,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -139786,8 +135359,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -139819,8 +135391,7 @@
       "Inference",
       {
         "current_goal_id": 1583,
-        "current_goal_text":
-          "coq.typecheck (global (const «Builders_18.HB_unnamed_factory_24»)) X176^1 \n X179^1",
+        "current_goal_text": "coq.typecheck (global (const «Builders_18.HB_unnamed_factory_24»)) X176^1 \n X179^1",
         "current_goal_predicate": "coq.typecheck",
         "failed_attempts": [],
         "successful_attempts": [
@@ -139831,8 +135402,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "X176^1 =\n prod `T` (sort (typ «interleave_context.396»)) c1 \\\n  prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n   c2 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c1, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]",
+                "goal_text": "X176^1 =\n prod `T` (sort (typ «interleave_context.396»)) c1 \\\n  prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n   c2 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c1, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]",
                 "goal_id": 1587
               },
               { "goal_text": "X179^1 = ok", "goal_id": 1588 }
@@ -139851,8 +135421,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -139890,13 +135459,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -139911,8 +135478,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -140007,13 +135573,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -140105,13 +135669,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -140126,13 +135688,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -140147,13 +135707,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -140168,13 +135726,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -140246,13 +135802,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -140343,13 +135897,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -140383,13 +135935,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -140423,13 +135973,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -140444,13 +135992,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -140750,13 +136296,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -140775,8 +136319,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -140801,13 +136344,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -140822,8 +136363,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -140855,8 +136395,7 @@
       "Inference",
       {
         "current_goal_id": 1587,
-        "current_goal_text":
-          "X176^1 =\n prod `T` (sort (typ «interleave_context.396»)) c1 \\\n  prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n   c2 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c1, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]",
+        "current_goal_text": "X176^1 =\n prod `T` (sort (typ «interleave_context.396»)) c1 \\\n  prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n   c2 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c1, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]",
         "current_goal_predicate": "=",
         "failed_attempts": [],
         "successful_attempts": [
@@ -140890,8 +136429,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -140929,13 +136467,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -140950,8 +136486,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -141046,13 +136581,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -141144,13 +136677,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -141165,13 +136696,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -141186,13 +136715,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -141207,13 +136734,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -141285,13 +136810,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -141382,13 +136905,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -141422,13 +136943,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -141462,13 +136981,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -141483,13 +137000,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -141789,13 +137304,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -141814,8 +137327,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -141840,13 +137352,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -141861,8 +137371,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -141923,8 +137432,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -141962,13 +137470,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -141983,8 +137489,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -142079,13 +137584,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -142177,13 +137680,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -142198,13 +137699,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -142219,13 +137718,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -142240,13 +137737,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -142318,13 +137813,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -142415,13 +137908,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -142455,13 +137946,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -142495,13 +137984,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -142516,13 +138003,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -142822,13 +138307,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -142847,8 +138330,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -142873,13 +138355,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -142894,8 +138374,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -142930,13 +138409,11 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "std.assert-ok!\n (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_24»)) X176^1) \n Builder illtyped",
+              "goal_text": "std.assert-ok!\n (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_24»)) X176^1) \n Builder illtyped",
               "goal_id": 1580
             },
             "cut_branch": {
-              "rule_text":
-                "(std.assert-ok! _ A0) :- (std.fatal-error-w-data A0 no diagnostic returned).",
+              "rule_text": "(std.assert-ok! _ A0) :- (std.fatal-error-w-data A0 no diagnostic returned).",
               "rule_loc": [
                 "File",
                 {
@@ -142960,8 +138437,7 @@
       "Inference",
       {
         "current_goal_id": 1585,
-        "current_goal_text":
-          "ok = ok ; ok = error X180^1 , std.fatal-error-w-data Builder illtyped X180^1",
+        "current_goal_text": "ok = ok ; ok = error X180^1 , std.fatal-error-w-data Builder illtyped X180^1",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -143013,8 +138489,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -143052,13 +138527,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -143073,8 +138546,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -143169,13 +138641,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -143267,13 +138737,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -143288,13 +138756,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -143309,13 +138775,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -143330,13 +138794,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -143408,13 +138870,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -143505,13 +138965,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -143545,13 +139003,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -143585,13 +139041,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -143606,13 +139060,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -143912,13 +139364,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -143937,8 +139387,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -143963,13 +139412,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -143984,8 +139431,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -144060,8 +139506,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -144099,13 +139544,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -144120,8 +139563,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -144216,13 +139658,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -144314,13 +139754,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -144335,13 +139773,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -144356,13 +139792,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -144377,13 +139811,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -144455,13 +139887,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -144552,13 +139982,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -144592,13 +140020,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -144632,13 +140058,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -144653,13 +140077,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -144959,13 +140381,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -144984,8 +140404,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -145010,13 +140429,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -145031,8 +140448,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -145067,8 +140483,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "X179^1 = ok ;\n X179^1 = error X180^1 , std.fatal-error-w-data Builder illtyped X180^1",
+              "goal_text": "X179^1 = ok ;\n X179^1 = error X180^1 , std.fatal-error-w-data Builder illtyped X180^1",
               "goal_id": 1585
             },
             "cut_branch": {
@@ -145102,8 +140517,7 @@
       "Inference",
       {
         "current_goal_id": 1582,
-        "current_goal_text":
-          "std.do!\n [(coq.subst-prod [] \n    (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n      prod `fresh_name_19` \n       (app [global (const «IsSelfA'.phant_axioms»), c1]) c2 \\\n       app\n        [global (indt «IsSelfA.axioms_»), c1, \n         app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n         app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]) \n    X177^1 , coq.subst-prod [c0] X177^1 X178^1), \n  std.assert! (extract-conclusion-params c0 X178^1 X175^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
+        "current_goal_text": "std.do!\n [(coq.subst-prod [] \n    (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n      prod `fresh_name_19` \n       (app [global (const «IsSelfA'.phant_axioms»), c1]) c2 \\\n       app\n        [global (indt «IsSelfA.axioms_»), c1, \n         app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n         app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]) \n    X177^1 , coq.subst-prod [c0] X177^1 X178^1), \n  std.assert! (extract-conclusion-params c0 X178^1 X175^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -145112,8 +140526,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -145138,14 +140551,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «IsSelfA.axioms_»), c1, \n      app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n      app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]) \n X177^1 , coq.subst-prod [c0] X177^1 X178^1",
+                "goal_text": "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «IsSelfA.axioms_»), c1, \n      app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n      app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]) \n X177^1 , coq.subst-prod [c0] X177^1 X178^1",
                 "goal_id": 1590
               },
               { "goal_text": "!", "goal_id": 1591 },
               {
-                "goal_text":
-                  "std.do!\n [std.assert! (extract-conclusion-params c0 X178^1 X175^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
+                "goal_text": "std.do!\n [std.assert! (extract-conclusion-params c0 X178^1 X175^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
                 "goal_id": 1592
               }
             ],
@@ -145196,13 +140607,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -145217,8 +140626,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -145313,13 +140721,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -145411,13 +140817,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -145432,13 +140836,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -145453,13 +140855,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -145474,13 +140874,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -145552,13 +140950,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -145649,13 +141045,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -145689,13 +141083,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -145729,13 +141121,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -145750,13 +141140,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -146056,13 +141444,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -146081,8 +141467,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -146107,13 +141492,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -146128,8 +141511,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -146161,8 +141543,7 @@
       "Inference",
       {
         "current_goal_id": 1590,
-        "current_goal_text":
-          "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «IsSelfA.axioms_»), c1, \n      app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n      app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]) \n X177^1 , coq.subst-prod [c0] X177^1 X178^1",
+        "current_goal_text": "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «IsSelfA.axioms_»), c1, \n      app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n      app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]) \n X177^1 , coq.subst-prod [c0] X177^1 X178^1",
         "current_goal_predicate": ",",
         "failed_attempts": [],
         "successful_attempts": [
@@ -146173,8 +141554,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «IsSelfA.axioms_»), c1, \n      app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n      app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]) \n X177^1",
+                "goal_text": "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «IsSelfA.axioms_»), c1, \n      app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n      app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]) \n X177^1",
                 "goal_id": 1593
               },
               {
@@ -146234,13 +141614,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -146255,8 +141633,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -146351,13 +141728,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -146449,13 +141824,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -146470,13 +141843,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -146491,13 +141862,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -146512,13 +141881,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -146590,13 +141957,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -146687,13 +142052,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -146727,13 +142090,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -146767,13 +142128,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -146788,13 +142147,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -147094,13 +142451,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -147119,8 +142474,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -147145,13 +142499,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -147166,8 +142518,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -147199,8 +142550,7 @@
       "Inference",
       {
         "current_goal_id": 1593,
-        "current_goal_text":
-          "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «IsSelfA.axioms_»), c1, \n      app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n      app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]) \n X177^1",
+        "current_goal_text": "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «IsSelfA.axioms_»), c1, \n      app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n      app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]) \n X177^1",
         "current_goal_predicate": "coq.subst-prod",
         "failed_attempts": [],
         "successful_attempts": [
@@ -147304,13 +142654,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -147325,8 +142673,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -147421,13 +142768,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -147519,13 +142864,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -147540,13 +142883,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -147561,13 +142902,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -147582,13 +142921,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -147660,13 +142997,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -147757,13 +143092,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -147797,13 +143130,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -147837,13 +143168,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -147858,13 +143187,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -148164,13 +143491,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -148189,8 +143514,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -148215,13 +143539,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -148236,8 +143558,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -148272,13 +143593,11 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «IsSelfA.axioms_»), c1, \n      app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n      app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]) \n X177^1",
+              "goal_text": "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «IsSelfA.axioms_»), c1, \n      app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n      app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]) \n X177^1",
               "goal_id": 1593
             },
             "cut_branch": {
-              "rule_text":
-                "(coq.subst-prod A0 (let _ _ A1 A2) A3) :- (!), \n (coq.subst-prod A0 (A2 A1) A3).",
+              "rule_text": "(coq.subst-prod A0 (let _ _ A1 A2) A3) :- (!), \n (coq.subst-prod A0 (A2 A1) A3).",
               "rule_loc": [
                 "File",
                 {
@@ -148302,8 +143621,7 @@
       "Inference",
       {
         "current_goal_id": 1594,
-        "current_goal_text":
-          "coq.subst-prod [c0] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «IsSelfA.axioms_»), c1, \n      app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n      app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]) \n X178^1",
+        "current_goal_text": "coq.subst-prod [c0] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «IsSelfA.axioms_»), c1, \n      app [global (const «Builders_18.HB_unnamed_factory_20»), c1, c2], \n      app [global (const «Builders_18.HB_unnamed_factory_22»), c1, c2]]) \n X178^1",
         "current_goal_predicate": "coq.subst-prod",
         "failed_attempts": [],
         "successful_attempts": [
@@ -148312,8 +143630,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(coq.subst-prod [A0 | A1] (prod _ _ A2) A3) :- (!), \n (coq.subst-prod A1 (A2 A0) A3).",
+                  "rule_text": "(coq.subst-prod [A0 | A1] (prod _ _ A2) A3) :- (!), \n (coq.subst-prod A1 (A2 A0) A3).",
                   "rule_loc": [
                     "File",
                     {
@@ -148338,8 +143655,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1596 },
               {
-                "goal_text":
-                  "coq.subst-prod [] \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X178^1",
+                "goal_text": "coq.subst-prod [] \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X178^1",
                 "goal_id": 1597
               }
             ],
@@ -148352,8 +143668,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.subst-prod [A0 | A1] (prod _ _ A2) A3) :- (!), \n (coq.subst-prod A1 (A2 A0) A3).",
+                "rule_text": "(coq.subst-prod [A0 | A1] (prod _ _ A2) A3) :- (!), \n (coq.subst-prod A1 (A2 A0) A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -148415,13 +143730,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -148436,8 +143749,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -148532,13 +143844,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -148630,13 +143940,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -148651,13 +143959,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -148672,13 +143978,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -148693,13 +143997,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -148771,13 +144073,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -148868,13 +144168,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -148908,13 +144206,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -148948,13 +144244,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -148969,13 +144263,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -149275,13 +144567,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -149300,8 +144590,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -149326,13 +144615,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -149347,8 +144634,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -149387,8 +144673,7 @@
               "goal_id": 1594
             },
             "cut_branch": {
-              "rule_text":
-                "(coq.subst-prod A0 (let _ _ A1 A2) A3) :- (!), \n (coq.subst-prod A0 (A2 A1) A3).",
+              "rule_text": "(coq.subst-prod A0 (let _ _ A1 A2) A3) :- (!), \n (coq.subst-prod A0 (A2 A1) A3).",
               "rule_loc": [
                 "File",
                 {
@@ -149406,8 +144691,7 @@
               "goal_id": 1594
             },
             "cut_branch": {
-              "rule_text":
-                "(coq.subst-prod [_ | _] A0 _) :- (!), \n (std.fatal-error-w-data subst-prod: not a product A0).",
+              "rule_text": "(coq.subst-prod [_ | _] A0 _) :- (!), \n (std.fatal-error-w-data subst-prod: not a product A0).",
               "rule_loc": [
                 "File",
                 {
@@ -149431,8 +144715,7 @@
       "Inference",
       {
         "current_goal_id": 1597,
-        "current_goal_text":
-          "coq.subst-prod [] \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X178^1",
+        "current_goal_text": "coq.subst-prod [] \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X178^1",
         "current_goal_predicate": "coq.subst-prod",
         "failed_attempts": [],
         "successful_attempts": [
@@ -149493,8 +144776,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.subst-prod [A0 | A1] (prod _ _ A2) A3) :- (!), \n (coq.subst-prod A1 (A2 A0) A3).",
+                "rule_text": "(coq.subst-prod [A0 | A1] (prod _ _ A2) A3) :- (!), \n (coq.subst-prod A1 (A2 A0) A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -149556,13 +144838,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -149577,8 +144857,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -149673,13 +144952,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -149771,13 +145048,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -149792,13 +145067,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -149813,13 +145086,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -149834,13 +145105,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -149912,13 +145181,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -150009,13 +145276,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -150049,13 +145314,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -150089,13 +145352,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -150110,13 +145371,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -150416,13 +145675,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -150441,8 +145698,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -150467,13 +145723,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -150488,8 +145742,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -150524,13 +145777,11 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "coq.subst-prod [] \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X178^1",
+              "goal_text": "coq.subst-prod [] \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X178^1",
               "goal_id": 1597
             },
             "cut_branch": {
-              "rule_text":
-                "(coq.subst-prod A0 (let _ _ A1 A2) A3) :- (!), \n (coq.subst-prod A0 (A2 A1) A3).",
+              "rule_text": "(coq.subst-prod A0 (let _ _ A1 A2) A3) :- (!), \n (coq.subst-prod A0 (A2 A1) A3).",
               "rule_loc": [
                 "File",
                 {
@@ -150560,8 +145811,7 @@
       "Inference",
       {
         "current_goal_id": 1592,
-        "current_goal_text":
-          "std.do!\n [std.assert!\n   (extract-conclusion-params c0 \n     (prod `fresh_name_19` \n       (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n       app\n        [global (indt «IsSelfA.axioms_»), c0, \n         app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n         app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n     X175^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
+        "current_goal_text": "std.do!\n [std.assert!\n   (extract-conclusion-params c0 \n     (prod `fresh_name_19` \n       (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n       app\n        [global (indt «IsSelfA.axioms_»), c0, \n         app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n         app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n     X175^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -150570,8 +145820,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -150593,8 +145842,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.assert!\n (extract-conclusion-params c0 \n   (prod `fresh_name_19` \n     (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n     app\n      [global (indt «IsSelfA.axioms_»), c0, \n       app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n       app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n   X175^1) \n The conclusion of a builder is a mixin whose parameters depend on other mixins",
+                "goal_text": "std.assert!\n (extract-conclusion-params c0 \n   (prod `fresh_name_19` \n     (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n     app\n      [global (indt «IsSelfA.axioms_»), c0, \n       app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n       app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n   X175^1) \n The conclusion of a builder is a mixin whose parameters depend on other mixins",
                 "goal_id": 1599
               },
               { "goal_text": "!", "goal_id": 1600 },
@@ -150666,13 +145914,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -150687,8 +145933,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -150783,13 +146028,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -150881,13 +146124,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -150902,13 +146143,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -150923,13 +146162,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -150944,13 +146181,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -151022,13 +146257,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -151119,13 +146352,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -151159,13 +146390,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -151199,13 +146428,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -151220,13 +146447,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -151526,13 +146751,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -151551,8 +146774,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -151577,13 +146799,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -151598,8 +146818,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -151631,8 +146850,7 @@
       "Inference",
       {
         "current_goal_id": 1599,
-        "current_goal_text":
-          "std.assert!\n (extract-conclusion-params c0 \n   (prod `fresh_name_19` \n     (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n     app\n      [global (indt «IsSelfA.axioms_»), c0, \n       app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n       app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n   X175^1) \n The conclusion of a builder is a mixin whose parameters depend on other mixins",
+        "current_goal_text": "std.assert!\n (extract-conclusion-params c0 \n   (prod `fresh_name_19` \n     (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n     app\n      [global (indt «IsSelfA.axioms_»), c0, \n       app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n       app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n   X175^1) \n The conclusion of a builder is a mixin whose parameters depend on other mixins",
         "current_goal_predicate": "std.assert!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -151641,8 +146859,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                  "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -151667,8 +146884,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1 ;\n std.fatal-error-w-data\n  The conclusion of a builder is a mixin whose parameters depend on other mixins \n  (extract-conclusion-params c0 \n    (prod `fresh_name_19` \n      (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n      app\n       [global (indt «IsSelfA.axioms_»), c0, \n        app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n        app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n    X175^1)",
+                "goal_text": "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1 ;\n std.fatal-error-w-data\n  The conclusion of a builder is a mixin whose parameters depend on other mixins \n  (extract-conclusion-params c0 \n    (prod `fresh_name_19` \n      (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n      app\n       [global (indt «IsSelfA.axioms_»), c0, \n        app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n        app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n    X175^1)",
                 "goal_id": 1602
               },
               { "goal_text": "!", "goal_id": 1603 }
@@ -151682,8 +146898,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -151759,13 +146974,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -151780,8 +146993,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -151876,13 +147088,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -151974,13 +147184,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -151995,13 +147203,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -152016,13 +147222,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -152037,13 +147241,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -152115,13 +147317,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -152212,13 +147412,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -152252,13 +147450,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -152292,13 +147488,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -152313,13 +147507,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -152619,13 +147811,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -152644,8 +147834,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -152670,13 +147859,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -152691,8 +147878,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -152724,8 +147910,7 @@
       "Inference",
       {
         "current_goal_id": 1602,
-        "current_goal_text":
-          "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1 ;\n std.fatal-error-w-data\n  The conclusion of a builder is a mixin whose parameters depend on other mixins \n  (extract-conclusion-params c0 \n    (prod `fresh_name_19` \n      (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n      app\n       [global (indt «IsSelfA.axioms_»), c0, \n        app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n        app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n    X175^1)",
+        "current_goal_text": "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1 ;\n std.fatal-error-w-data\n  The conclusion of a builder is a mixin whose parameters depend on other mixins \n  (extract-conclusion-params c0 \n    (prod `fresh_name_19` \n      (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n      app\n       [global (indt «IsSelfA.axioms_»), c0, \n        app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n        app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n    X175^1)",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -152755,8 +147940,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1",
+                "goal_text": "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1",
                 "goal_id": 1604
               }
             ],
@@ -152788,8 +147972,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -152865,13 +148048,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -152886,8 +148067,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -152982,13 +148162,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -153080,13 +148258,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -153101,13 +148277,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -153122,13 +148296,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -153143,13 +148315,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -153221,13 +148391,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -153318,13 +148486,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -153358,13 +148524,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -153398,13 +148562,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -153419,13 +148581,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -153725,13 +148885,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -153750,8 +148908,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -153776,13 +148933,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -153797,8 +148952,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -153830,8 +148984,7 @@
       "Inference",
       {
         "current_goal_id": 1604,
-        "current_goal_text":
-          "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1",
+        "current_goal_text": "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1",
         "current_goal_predicate": "extract-conclusion-params",
         "failed_attempts": [],
         "successful_attempts": [
@@ -153840,13 +148993,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                  "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 115,
                       "column": 0,
                       "character": 3974
@@ -153870,8 +149021,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1605 },
               {
-                "goal_text":
-                  "pi c1 \\\n decl c1 _ (app [global (const «IsSelfA'.phant_axioms»), c0]) =>\n  extract-conclusion-params c0 \n   (app\n     [global (indt «IsSelfA.axioms_»), c0, \n      app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n      app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n   X175^1",
+                "goal_text": "pi c1 \\\n decl c1 _ (app [global (const «IsSelfA'.phant_axioms»), c0]) =>\n  extract-conclusion-params c0 \n   (app\n     [global (indt «IsSelfA.axioms_»), c0, \n      app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n      app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n   X175^1",
                 "goal_id": 1606
               }
             ],
@@ -153884,13 +149034,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -153924,8 +149072,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -154001,13 +149148,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -154022,8 +149167,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -154118,13 +149262,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -154216,13 +149358,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -154237,13 +149377,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -154258,13 +149396,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -154279,13 +149415,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -154357,13 +149491,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -154454,13 +149586,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -154494,13 +149624,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -154534,13 +149662,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -154555,13 +149681,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -154861,13 +149985,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -154886,8 +150008,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -154912,13 +150033,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -154933,8 +150052,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -154969,18 +150087,15 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1",
+              "goal_text": "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1",
               "goal_id": 1604
             },
             "cut_branch": {
-              "rule_text":
-                "(extract-conclusion-params A0 (app [global A1 | A2]) A3) :- (!), \n (factory-alias->gref A1 A4), (factory-nparams A4 A5), \n (std.map A2 (copy-pack-holes A0) A6), (std.spy (std.take A5 A6 A3)).",
+              "rule_text": "(extract-conclusion-params A0 (app [global A1 | A2]) A3) :- (!), \n (factory-alias->gref A1 A4), (factory-nparams A4 A5), \n (std.map A2 (copy-pack-holes A0) A6), (std.spy (std.take A5 A6 A3)).",
               "rule_loc": [
                 "File",
                 {
-                  "filename":
-                    "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                  "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                   "line": 117,
                   "column": 0,
                   "character": 4090
@@ -154990,18 +150105,15 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1",
+              "goal_text": "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1",
               "goal_id": 1604
             },
             "cut_branch": {
-              "rule_text":
-                "(extract-conclusion-params A0 A1 A2) :- (whd1 A1 A3), (!), \n (extract-conclusion-params A0 A3 A2).",
+              "rule_text": "(extract-conclusion-params A0 A1 A2) :- (whd1 A1 A3), (!), \n (extract-conclusion-params A0 A3 A2).",
               "rule_loc": [
                 "File",
                 {
-                  "filename":
-                    "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                  "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                   "line": 122,
                   "column": 0,
                   "character": 4303
@@ -155021,8 +150133,7 @@
       "Inference",
       {
         "current_goal_id": 1606,
-        "current_goal_text":
-          "pi c1 \\\n decl c1 _ (app [global (const «IsSelfA'.phant_axioms»), c0]) =>\n  extract-conclusion-params c0 \n   (app\n     [global (indt «IsSelfA.axioms_»), c0, \n      app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n      app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n   X175^1",
+        "current_goal_text": "pi c1 \\\n decl c1 _ (app [global (const «IsSelfA'.phant_axioms»), c0]) =>\n  extract-conclusion-params c0 \n   (app\n     [global (indt «IsSelfA.axioms_»), c0, \n      app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n      app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n   X175^1",
         "current_goal_predicate": "pi",
         "failed_attempts": [],
         "successful_attempts": [
@@ -155033,8 +150144,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "decl c1 _ (app [global (const «IsSelfA'.phant_axioms»), c0]) =>\n extract-conclusion-params c0 \n  (app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n  X175^1",
+                "goal_text": "decl c1 _ (app [global (const «IsSelfA'.phant_axioms»), c0]) =>\n extract-conclusion-params c0 \n  (app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n  X175^1",
                 "goal_id": 1607
               }
             ],
@@ -155052,13 +150162,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -155092,8 +150200,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -155169,13 +150276,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -155190,8 +150295,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -155286,13 +150390,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -155384,13 +150486,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -155405,13 +150505,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -155426,13 +150524,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -155447,13 +150543,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -155525,13 +150619,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -155622,13 +150714,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -155662,13 +150752,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -155702,13 +150790,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -155723,13 +150809,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -156029,13 +151113,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -156054,8 +151136,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -156080,13 +151161,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -156101,8 +151180,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -156134,8 +151212,7 @@
       "Inference",
       {
         "current_goal_id": 1607,
-        "current_goal_text":
-          "decl c1 _ (app [global (const «IsSelfA'.phant_axioms»), c0]) =>\n extract-conclusion-params c0 \n  (app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n  X175^1",
+        "current_goal_text": "decl c1 _ (app [global (const «IsSelfA'.phant_axioms»), c0]) =>\n extract-conclusion-params c0 \n  (app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n  X175^1",
         "current_goal_predicate": "=>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -156146,8 +151223,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "extract-conclusion-params c0 \n (app\n   [global (indt «IsSelfA.axioms_»), c0, \n    app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1",
+                "goal_text": "extract-conclusion-params c0 \n (app\n   [global (indt «IsSelfA.axioms_»), c0, \n    app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1",
                 "goal_id": 1608
               }
             ],
@@ -156170,13 +151246,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -156210,8 +151284,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -156287,13 +151360,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -156308,8 +151379,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -156404,13 +151474,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -156502,13 +151570,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -156523,13 +151589,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -156544,13 +151608,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -156565,13 +151627,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -156643,13 +151703,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -156740,13 +151798,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -156780,13 +151836,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -156820,13 +151874,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -156841,13 +151893,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -157147,13 +152197,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -157172,8 +152220,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -157198,13 +152245,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -157219,8 +152264,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -157252,21 +152296,18 @@
       "Inference",
       {
         "current_goal_id": 1608,
-        "current_goal_text":
-          "extract-conclusion-params c0 \n (app\n   [global (indt «IsSelfA.axioms_»), c0, \n    app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1",
+        "current_goal_text": "extract-conclusion-params c0 \n (app\n   [global (indt «IsSelfA.axioms_»), c0, \n    app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1",
         "current_goal_predicate": "extract-conclusion-params",
         "failed_attempts": [
           {
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (app [global A1 | A2]) A3) :- (!), \n (factory-alias->gref A1 A4), (factory-nparams A4 A5), \n (std.map A2 (copy-pack-holes A0) A6), (std.spy (std.take A5 A6 A3)).",
+                "rule_text": "(extract-conclusion-params A0 (app [global A1 | A2]) A3) :- (!), \n (factory-alias->gref A1 A4), (factory-nparams A4 A5), \n (std.map A2 (copy-pack-holes A0) A6), (std.spy (std.take A5 A6 A3)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 117,
                     "column": 0,
                     "character": 4090
@@ -157291,13 +152332,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                  "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 115,
                       "column": 0,
                       "character": 3974
@@ -157316,8 +152355,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1609 },
               {
-                "goal_text":
-                  "factory-alias->gref (indt «IsSelfA.axioms_») X181^2",
+                "goal_text": "factory-alias->gref (indt «IsSelfA.axioms_») X181^2",
                 "goal_id": 1610
               },
               {
@@ -157325,8 +152363,7 @@
                 "goal_id": 1611
               },
               {
-                "goal_text":
-                  "std.map\n [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n  app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n (copy-pack-holes c0) X183^2",
+                "goal_text": "std.map\n [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n  app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n (copy-pack-holes c0) X183^2",
                 "goal_id": 1612
               },
               {
@@ -157343,13 +152380,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -157374,13 +152409,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -157414,8 +152447,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -157491,13 +152523,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -157512,8 +152542,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -157608,13 +152637,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -157706,13 +152733,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -157727,13 +152752,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -157748,13 +152771,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -157769,13 +152790,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -157847,13 +152866,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -157944,13 +152961,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -157984,13 +152999,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -158024,13 +153037,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -158045,13 +153056,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -158351,13 +153360,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -158376,8 +153383,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -158402,13 +153408,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -158423,8 +153427,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -158459,18 +153462,15 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "extract-conclusion-params c0 \n (app\n   [global (indt «IsSelfA.axioms_»), c0, \n    app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1",
+              "goal_text": "extract-conclusion-params c0 \n (app\n   [global (indt «IsSelfA.axioms_»), c0, \n    app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1",
               "goal_id": 1608
             },
             "cut_branch": {
-              "rule_text":
-                "(extract-conclusion-params A0 A1 A2) :- (whd1 A1 A3), (!), \n (extract-conclusion-params A0 A3 A2).",
+              "rule_text": "(extract-conclusion-params A0 A1 A2) :- (whd1 A1 A3), (!), \n (extract-conclusion-params A0 A3 A2).",
               "rule_loc": [
                 "File",
                 {
-                  "filename":
-                    "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                  "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                   "line": 122,
                   "column": 0,
                   "character": 4303
@@ -158490,8 +153490,7 @@
       "Inference",
       {
         "current_goal_id": 1610,
-        "current_goal_text":
-          "factory-alias->gref (indt «IsSelfA.axioms_») X181^2",
+        "current_goal_text": "factory-alias->gref (indt «IsSelfA.axioms_») X181^2",
         "current_goal_predicate": "factory-alias->gref",
         "failed_attempts": [],
         "successful_attempts": [
@@ -158500,13 +153499,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
+                  "rule_text": "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 74,
                       "column": 0,
                       "character": 2385
@@ -158521,8 +153518,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "phant-abbrev X181^2 (indt «IsSelfA.axioms_») _",
+                "goal_text": "phant-abbrev X181^2 (indt «IsSelfA.axioms_») _",
                 "goal_id": 1614
               },
               { "goal_text": "!", "goal_id": 1615 }
@@ -158536,13 +153532,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
+                "rule_text": "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 74,
                     "column": 0,
                     "character": 2385
@@ -158557,13 +153551,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -158588,13 +153580,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -158628,8 +153618,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -158705,13 +153694,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -158726,8 +153713,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -158822,13 +153808,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -158920,13 +153904,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -158941,13 +153923,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -158962,13 +153942,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -158983,13 +153961,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -159061,13 +154037,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -159158,13 +154132,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -159198,13 +154170,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -159238,13 +154208,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -159259,13 +154227,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -159565,13 +154531,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -159590,8 +154554,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -159616,13 +154579,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -159637,8 +154598,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -159670,16 +154630,14 @@
       "Inference",
       {
         "current_goal_id": 1614,
-        "current_goal_text":
-          "phant-abbrev X181^2 (indt «IsSelfA.axioms_») _",
+        "current_goal_text": "phant-abbrev X181^2 (indt «IsSelfA.axioms_») _",
         "current_goal_predicate": "phant-abbrev",
         "failed_attempts": [
           {
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -159703,8 +154661,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «HasA.Axioms_») (const «HasA.phant_Build») \n  «interleave_context.HasA.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «HasA.Axioms_») (const «HasA.phant_Build») \n  «interleave_context.HasA.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -159728,8 +154685,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -159753,8 +154709,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «HasB.Axioms_») (const «HasB.phant_Build») \n  «interleave_context.HasB.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «HasB.Axioms_») (const «HasB.phant_Build») \n  «interleave_context.HasB.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -159778,8 +154733,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -159803,8 +154757,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «IsSelfA.Axioms_») (const «IsSelfA.phant_Build») \n  «interleave_context.IsSelfA.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «IsSelfA.Axioms_») (const «IsSelfA.phant_Build») \n  «interleave_context.IsSelfA.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -159828,8 +154781,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -159853,8 +154805,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «IsSelfA'.Axioms_») (const «IsSelfA'.phant_Build») \n  «interleave_context.IsSelfA'.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «IsSelfA'.Axioms_») (const «IsSelfA'.phant_Build») \n  «interleave_context.IsSelfA'.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -159882,8 +154833,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -159902,13 +154852,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
+                "rule_text": "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 74,
                     "column": 0,
                     "character": 2385
@@ -159923,13 +154871,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -159954,13 +154900,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -159994,8 +154938,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -160071,13 +155014,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -160092,8 +155033,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -160188,13 +155128,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -160286,13 +155224,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -160307,13 +155243,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -160328,13 +155262,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -160349,13 +155281,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -160427,13 +155357,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -160524,13 +155452,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -160564,13 +155490,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -160604,13 +155528,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -160625,13 +155547,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -160931,13 +155851,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -160956,8 +155874,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -160982,13 +155899,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -161003,8 +155918,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -161036,8 +155950,7 @@
       "Inference",
       {
         "current_goal_id": 1610,
-        "current_goal_text":
-          "factory-alias->gref (indt «IsSelfA.axioms_») X181^2",
+        "current_goal_text": "factory-alias->gref (indt «IsSelfA.axioms_») X181^2",
         "current_goal_predicate": "factory-alias->gref",
         "failed_attempts": [],
         "successful_attempts": [
@@ -161046,13 +155959,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
+                  "rule_text": "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 75,
                       "column": 0,
                       "character": 2443
@@ -161081,13 +155992,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
+                "rule_text": "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 75,
                     "column": 0,
                     "character": 2443
@@ -161102,13 +156011,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -161133,13 +156040,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -161173,8 +156078,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -161250,13 +156154,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -161271,8 +156173,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -161367,13 +156268,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -161465,13 +156364,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -161486,13 +156383,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -161507,13 +156402,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -161528,13 +156421,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -161606,13 +156497,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -161703,13 +156592,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -161743,13 +156630,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -161783,13 +156668,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -161804,13 +156687,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -162110,13 +156991,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -162135,8 +157014,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -162161,13 +157039,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -162182,8 +157058,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -162222,8 +157097,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -162246,8 +157120,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -162268,8 +157141,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                  "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                   "rule_loc": [
                     "File",
                     {
@@ -162298,8 +157170,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -162318,13 +157189,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
+                "rule_text": "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 75,
                     "column": 0,
                     "character": 2443
@@ -162339,13 +157208,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -162370,13 +157237,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -162410,8 +157275,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -162487,13 +157351,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -162508,8 +157370,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -162604,13 +157465,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -162702,13 +157561,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -162723,13 +157580,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -162744,13 +157599,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -162765,13 +157618,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -162843,13 +157694,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -162940,13 +157789,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -162980,13 +157827,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -163020,13 +157865,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -163041,13 +157884,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -163347,13 +158188,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -163372,8 +158211,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -163398,13 +158236,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -163419,8 +158255,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -163459,8 +158294,7 @@
               "goal_id": 1616
             },
             "cut_branch": {
-              "rule_text":
-                "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
+              "rule_text": "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
               "rule_loc": [
                 "File",
                 {
@@ -163474,13 +158308,11 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-alias->gref (indt «IsSelfA.axioms_») X181^2",
+              "goal_text": "factory-alias->gref (indt «IsSelfA.axioms_») X181^2",
               "goal_id": 1610
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt «A.axioms_») (indt «A.axioms_»)) :- .",
+              "rule_text": "(factory-alias->gref (indt «A.axioms_») (indt «A.axioms_»)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -163494,13 +158326,11 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-alias->gref (indt «IsSelfA.axioms_») X181^2",
+              "goal_text": "factory-alias->gref (indt «IsSelfA.axioms_») X181^2",
               "goal_id": 1610
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt «B.axioms_») (indt «B.axioms_»)) :- .",
+              "rule_text": "(factory-alias->gref (indt «B.axioms_») (indt «B.axioms_»)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -163514,13 +158344,11 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-alias->gref (indt «IsSelfA.axioms_») X181^2",
+              "goal_text": "factory-alias->gref (indt «IsSelfA.axioms_») X181^2",
               "goal_id": 1610
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt «SelfA.axioms_») (indt «SelfA.axioms_»)) :- .",
+              "rule_text": "(factory-alias->gref (indt «SelfA.axioms_») (indt «SelfA.axioms_»)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -163544,8 +158372,7 @@
       "Inference",
       {
         "current_goal_id": 1611,
-        "current_goal_text":
-          "factory-nparams (indt «IsSelfA.axioms_») X182^2",
+        "current_goal_text": "factory-nparams (indt «IsSelfA.axioms_») X182^2",
         "current_goal_predicate": "factory-nparams",
         "failed_attempts": [
           {
@@ -163575,8 +158402,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-nparams (indt «HasB.axioms_») 1) :- .",
+                "rule_text": "(factory-nparams (indt «HasB.axioms_») 1) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -163622,8 +158448,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-nparams (indt «IsSelfA.axioms_») 0) :- .",
+                "rule_text": "(factory-nparams (indt «IsSelfA.axioms_») 0) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -163644,8 +158469,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(factory-nparams (indt «HasA.axioms_») 1) :- .",
+                  "rule_text": "(factory-nparams (indt «HasA.axioms_») 1) :- .",
                   "rule_loc": [
                     "File",
                     {
@@ -163674,8 +158498,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-nparams (indt «HasA.axioms_») 1) :- .",
+                "rule_text": "(factory-nparams (indt «HasA.axioms_») 1) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -163694,13 +158517,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -163725,13 +158546,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -163765,8 +158584,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -163842,13 +158660,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -163863,8 +158679,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -163959,13 +158774,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -164057,13 +158870,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -164078,13 +158889,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -164099,13 +158908,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -164120,13 +158927,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -164198,13 +159003,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -164295,13 +159098,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -164335,13 +159136,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -164375,13 +159174,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -164396,13 +159193,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -164702,13 +159497,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -164727,8 +159520,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -164753,13 +159545,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -164774,8 +159564,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -164807,8 +159596,7 @@
       "Inference",
       {
         "current_goal_id": 1612,
-        "current_goal_text":
-          "std.map\n [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n  app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n (copy-pack-holes c0) X183^2",
+        "current_goal_text": "std.map\n [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n  app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n (copy-pack-holes c0) X183^2",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -164817,8 +159605,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -164846,8 +159633,7 @@
                 "goal_id": 1618
               },
               {
-                "goal_text":
-                  "std.map\n [app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n  app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n (copy-pack-holes c0) X185^2",
+                "goal_text": "std.map\n [app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n  app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n (copy-pack-holes c0) X185^2",
                 "goal_id": 1619
               }
             ],
@@ -164860,8 +159646,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -164880,13 +159665,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -164911,13 +159694,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -164951,8 +159732,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -165028,13 +159808,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -165049,8 +159827,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -165145,13 +159922,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -165243,13 +160018,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -165264,13 +160037,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -165285,13 +160056,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -165306,13 +160075,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -165384,13 +160151,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -165481,13 +160246,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -165521,13 +160284,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -165561,13 +160322,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -165582,13 +160341,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -165888,13 +160645,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -165913,8 +160668,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -165939,13 +160693,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -165960,8 +160712,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -166002,13 +160753,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                  "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                       "line": 318,
                       "column": 0,
                       "character": 12866
@@ -166032,8 +160781,7 @@
                 "goal_id": 1621
               },
               {
-                "goal_text":
-                  "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X188^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X188^2 | c6] c3) | X187^2]\n => copy c0 X184^2",
+                "goal_text": "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X188^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X188^2 | c6] c3) | X187^2]\n => copy c0 X184^2",
                 "goal_id": 1622
               }
             ],
@@ -166046,13 +160794,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -166067,8 +160813,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -166087,13 +160832,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -166118,13 +160861,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -166158,8 +160899,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -166235,13 +160975,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -166256,8 +160994,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -166352,13 +161089,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -166450,13 +161185,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -166471,13 +161204,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -166492,13 +161223,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -166513,13 +161242,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -166591,13 +161318,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -166688,13 +161413,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -166728,13 +161451,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -166768,13 +161489,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -166789,13 +161508,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -167095,13 +161812,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -167120,8 +161835,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -167146,13 +161860,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -167167,8 +161879,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -167209,13 +161920,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                  "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 200,
                       "column": 0,
                       "character": 7260
@@ -167244,13 +161953,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -167265,13 +161972,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -167286,8 +161991,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -167306,13 +162010,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -167337,13 +162039,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -167377,8 +162077,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -167454,13 +162153,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -167475,8 +162172,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -167571,13 +162267,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -167669,13 +162363,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -167690,13 +162382,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -167711,13 +162401,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -167732,13 +162420,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -167810,13 +162496,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -167907,13 +162591,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -167947,13 +162629,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -167987,13 +162667,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -168008,13 +162686,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -168314,13 +162990,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -168339,8 +163013,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -168365,13 +163038,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -168386,8 +163057,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -168428,8 +163098,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                  "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -168448,8 +163117,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "findall_solutions (local-canonical X189^2) X190^2",
+                "goal_text": "findall_solutions (local-canonical X189^2) X190^2",
                 "goal_id": 1625
               }
             ],
@@ -168462,8 +163130,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -168482,13 +163149,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -168503,13 +163168,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -168524,8 +163187,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -168544,13 +163206,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -168575,13 +163235,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -168615,8 +163273,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -168692,13 +163349,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -168713,8 +163368,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -168809,13 +163463,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -168907,13 +163559,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -168928,13 +163578,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -168949,13 +163597,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -168970,13 +163616,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -169048,13 +163692,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -169145,13 +163787,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -169185,13 +163825,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -169225,13 +163863,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -169246,13 +163882,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -169552,13 +164186,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -169577,8 +164209,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -169603,13 +164234,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -169624,8 +164253,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -169657,8 +164285,7 @@
       "Findall",
       {
         "findall_goal_id": 1625,
-        "findall_goal_text":
-          "findall_solutions (local-canonical X189^2) X190^2",
+        "findall_goal_text": "findall_solutions (local-canonical X189^2) X190^2",
         "findall_cards": [
           {
             "step_id": 0,
@@ -169698,8 +164325,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -169718,13 +164344,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -169739,13 +164363,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -169760,8 +164382,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -169780,13 +164401,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -169811,13 +164430,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -169851,8 +164468,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -169928,13 +164544,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -169949,8 +164563,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -170045,13 +164658,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -170143,13 +164754,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -170164,13 +164773,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -170185,13 +164792,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -170206,13 +164811,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -170284,13 +164887,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -170381,13 +164982,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -170421,13 +165020,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -170461,13 +165058,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -170482,13 +165077,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -170788,13 +165381,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -170813,8 +165404,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -170839,13 +165429,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -170860,8 +165448,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -170945,13 +165532,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -170966,13 +165551,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -170987,8 +165570,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -171007,13 +165589,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -171038,13 +165618,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -171078,8 +165656,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -171155,13 +165732,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -171176,8 +165751,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -171272,13 +165846,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -171370,13 +165942,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -171391,13 +165961,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -171412,13 +165980,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -171433,13 +165999,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -171511,13 +166075,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -171608,13 +166170,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -171648,13 +166208,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -171688,13 +166246,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -171709,13 +166265,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -172015,13 +166569,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -172040,8 +166592,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -172066,13 +166617,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -172087,8 +166636,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -172133,8 +166681,7 @@
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
                       "line": 196,
                       "column": 0,
                       "character": 7411
@@ -172158,8 +166705,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 7411
@@ -172174,13 +166720,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -172195,8 +166739,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -172215,13 +166758,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -172246,13 +166787,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -172286,8 +166825,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -172363,13 +166901,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -172384,8 +166920,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -172480,13 +167015,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -172578,13 +167111,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -172599,13 +167130,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -172620,13 +167149,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -172641,13 +167168,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -172719,13 +167244,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -172816,13 +167339,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -172856,13 +167377,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -172896,13 +167415,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -172917,13 +167434,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -173223,13 +167738,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -173248,8 +167761,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -173274,13 +167786,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -173295,8 +167805,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -173328,8 +167837,7 @@
       "Inference",
       {
         "current_goal_id": 1622,
-        "current_goal_text":
-          "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X188^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X188^2 | c6] c3)] =>\n copy c0 X184^2",
+        "current_goal_text": "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X188^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X188^2 | c6] c3)] =>\n copy c0 X184^2",
         "current_goal_predicate": "=>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -173355,13 +167863,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -173376,8 +167882,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -173396,13 +167901,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -173427,13 +167930,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -173467,8 +167968,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -173544,13 +168044,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -173565,8 +168063,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -173661,13 +168158,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -173759,13 +168254,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -173780,13 +168273,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -173801,13 +168292,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -173822,13 +168311,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -173900,13 +168387,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -173997,13 +168482,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -174037,13 +168520,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -174077,13 +168558,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -174098,13 +168577,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -174404,13 +168881,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -174429,8 +168904,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -174455,13 +168929,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -174476,8 +168948,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -174518,8 +168989,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                  "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -174532,8 +169002,7 @@
                 }
               ],
               "events": [
-                [ "Assign", "A0 := c0" ],
-                [ "Assign", "A1 := X184^2" ]
+                [ "Assign", "A0 := c0" ], [ "Assign", "A1 := X184^2" ]
               ]
             },
             "siblings": [
@@ -174551,8 +169020,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -174576,13 +169044,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -174597,8 +169063,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -174617,13 +169082,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -174648,13 +169111,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -174688,8 +169149,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -174765,13 +169225,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -174786,8 +169244,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -174882,13 +169339,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -174980,13 +169435,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -175001,13 +169454,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -175022,13 +169473,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -175043,13 +169492,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -175121,13 +169568,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -175218,13 +169663,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -175258,13 +169701,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -175298,13 +169739,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -175319,13 +169758,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -175625,13 +170062,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -175650,8 +170085,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -175676,13 +170110,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -175697,8 +170129,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -175754,8 +170185,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -175779,13 +170209,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -175800,8 +170228,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -175820,13 +170247,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -175851,13 +170276,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -175891,8 +170314,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -175968,13 +170390,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -175989,8 +170409,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -176085,13 +170504,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -176183,13 +170600,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -176204,13 +170619,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -176225,13 +170638,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -176246,13 +170657,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -176324,13 +170733,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -176421,13 +170828,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -176461,13 +170866,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -176501,13 +170904,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -176522,13 +170923,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -176828,13 +171227,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -176853,8 +171250,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -176879,13 +171275,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -176900,8 +171294,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -176962,8 +171355,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -176987,13 +171379,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -177008,8 +171398,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -177028,13 +171417,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -177059,13 +171446,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -177099,8 +171484,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -177176,13 +171560,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -177197,8 +171579,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -177293,13 +171674,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -177391,13 +171770,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -177412,13 +171789,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -177433,13 +171808,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -177454,13 +171827,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -177532,13 +171903,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -177629,13 +171998,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -177669,13 +172036,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -177709,13 +172074,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -177730,13 +172093,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -178036,13 +172397,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -178061,8 +172420,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -178087,13 +172445,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -178108,8 +172464,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -178171,8 +172526,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -178196,13 +172550,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -178217,8 +172569,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -178237,13 +172588,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -178268,13 +172617,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -178308,8 +172655,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -178385,13 +172731,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -178406,8 +172750,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -178502,13 +172845,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -178600,13 +172941,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -178621,13 +172960,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -178642,13 +172979,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -178663,13 +172998,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -178741,13 +173074,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -178838,13 +173169,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -178878,13 +173207,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -178918,13 +173245,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -178939,13 +173264,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -179245,13 +173568,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -179270,8 +173591,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -179296,13 +173616,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -179317,8 +173635,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -179356,8 +173673,7 @@
       "Inference",
       {
         "current_goal_id": 1619,
-        "current_goal_text":
-          "std.map\n [app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n  app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n (copy-pack-holes c0) X185^2",
+        "current_goal_text": "std.map\n [app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n  app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n (copy-pack-holes c0) X185^2",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -179366,8 +173682,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -179394,13 +173709,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "copy-pack-holes c0 \n (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1]) X191^2",
+                "goal_text": "copy-pack-holes c0 \n (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1]) X191^2",
                 "goal_id": 1634
               },
               {
-                "goal_text":
-                  "std.map [app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n (copy-pack-holes c0) X192^2",
+                "goal_text": "std.map [app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n (copy-pack-holes c0) X192^2",
                 "goal_id": 1635
               }
             ],
@@ -179413,8 +173726,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -179433,8 +173745,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -179453,13 +173764,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -179484,13 +173793,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -179524,8 +173831,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -179601,13 +173907,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -179622,8 +173926,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -179718,13 +174021,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -179816,13 +174117,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -179837,13 +174136,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -179858,13 +174155,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -179879,13 +174174,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -179957,13 +174250,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -180054,13 +174345,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -180094,13 +174383,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -180134,13 +174421,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -180155,13 +174440,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -180461,13 +174744,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -180486,8 +174767,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -180512,13 +174792,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -180533,8 +174811,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -180566,8 +174843,7 @@
       "Inference",
       {
         "current_goal_id": 1634,
-        "current_goal_text":
-          "copy-pack-holes c0 \n (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1]) X191^2",
+        "current_goal_text": "copy-pack-holes c0 \n (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1]) X191^2",
         "current_goal_predicate": "copy-pack-holes",
         "failed_attempts": [],
         "successful_attempts": [
@@ -180576,13 +174852,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                  "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                       "line": 318,
                       "column": 0,
                       "character": 12866
@@ -180609,8 +174883,7 @@
                 "goal_id": 1637
               },
               {
-                "goal_text":
-                  "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X195^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X195^2 | c6] c3) | X194^2]\n =>\n copy (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1]) \n  X191^2",
+                "goal_text": "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X195^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X195^2 | c6] c3) | X194^2]\n =>\n copy (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1]) \n  X191^2",
                 "goal_id": 1638
               }
             ],
@@ -180623,13 +174896,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -180644,8 +174915,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -180664,8 +174934,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -180684,13 +174953,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -180715,13 +174982,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -180755,8 +175020,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -180832,13 +175096,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -180853,8 +175115,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -180949,13 +175210,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -181047,13 +175306,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -181068,13 +175325,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -181089,13 +175344,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -181110,13 +175363,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -181188,13 +175439,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -181285,13 +175534,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -181325,13 +175572,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -181365,13 +175610,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -181386,13 +175629,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -181692,13 +175933,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -181717,8 +175956,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -181743,13 +175981,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -181764,8 +176000,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -181806,13 +176041,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                  "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 200,
                       "column": 0,
                       "character": 7260
@@ -181841,13 +176074,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -181862,13 +176093,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -181883,8 +176112,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -181903,8 +176131,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -181923,13 +176150,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -181954,13 +176179,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -181994,8 +176217,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -182071,13 +176293,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -182092,8 +176312,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -182188,13 +176407,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -182286,13 +176503,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -182307,13 +176522,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -182328,13 +176541,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -182349,13 +176560,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -182427,13 +176636,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -182524,13 +176731,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -182564,13 +176769,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -182604,13 +176807,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -182625,13 +176826,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -182931,13 +177130,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -182956,8 +177153,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -182982,13 +177178,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -183003,8 +177197,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -183045,8 +177238,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                  "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -183065,8 +177257,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "findall_solutions (local-canonical X196^2) X197^2",
+                "goal_text": "findall_solutions (local-canonical X196^2) X197^2",
                 "goal_id": 1641
               }
             ],
@@ -183079,8 +177270,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -183099,13 +177289,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -183120,13 +177308,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -183141,8 +177327,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -183161,8 +177346,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -183181,13 +177365,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -183212,13 +177394,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -183252,8 +177432,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -183329,13 +177508,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -183350,8 +177527,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -183446,13 +177622,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -183544,13 +177718,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -183565,13 +177737,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -183586,13 +177756,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -183607,13 +177775,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -183685,13 +177851,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -183782,13 +177946,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -183822,13 +177984,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -183862,13 +178022,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -183883,13 +178041,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -184189,13 +178345,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -184214,8 +178368,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -184240,13 +178393,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -184261,8 +178412,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -184294,8 +178444,7 @@
       "Findall",
       {
         "findall_goal_id": 1641,
-        "findall_goal_text":
-          "findall_solutions (local-canonical X196^2) X197^2",
+        "findall_goal_text": "findall_solutions (local-canonical X196^2) X197^2",
         "findall_cards": [
           {
             "step_id": 0,
@@ -184335,8 +178484,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -184355,13 +178503,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -184376,13 +178522,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -184397,8 +178541,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -184417,8 +178560,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -184437,13 +178579,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -184468,13 +178608,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -184508,8 +178646,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -184585,13 +178722,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -184606,8 +178741,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -184702,13 +178836,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -184800,13 +178932,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -184821,13 +178951,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -184842,13 +178970,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -184863,13 +178989,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -184941,13 +179065,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -185038,13 +179160,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -185078,13 +179198,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -185118,13 +179236,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -185139,13 +179255,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -185445,13 +179559,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -185470,8 +179582,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -185496,13 +179607,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -185517,8 +179626,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -185602,13 +179710,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -185623,13 +179729,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -185644,8 +179748,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -185664,8 +179767,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -185684,13 +179786,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -185715,13 +179815,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -185755,8 +179853,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -185832,13 +179929,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -185853,8 +179948,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -185949,13 +180043,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -186047,13 +180139,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -186068,13 +180158,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -186089,13 +180177,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -186110,13 +180196,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -186188,13 +180272,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -186285,13 +180367,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -186325,13 +180405,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -186365,13 +180443,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -186386,13 +180462,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -186692,13 +180766,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -186717,8 +180789,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -186743,13 +180814,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -186764,8 +180833,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -186810,8 +180878,7 @@
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
                       "line": 196,
                       "column": 0,
                       "character": 7411
@@ -186835,8 +180902,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 7411
@@ -186851,13 +180917,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -186872,8 +180936,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -186892,8 +180955,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -186912,13 +180974,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -186943,13 +181003,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -186983,8 +181041,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -187060,13 +181117,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -187081,8 +181136,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -187177,13 +181231,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -187275,13 +181327,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -187296,13 +181346,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -187317,13 +181365,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -187338,13 +181384,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -187416,13 +181460,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -187513,13 +181555,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -187553,13 +181593,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -187593,13 +181631,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -187614,13 +181650,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -187920,13 +181954,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -187945,8 +181977,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -187971,13 +182002,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -187992,8 +182021,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -188025,8 +182053,7 @@
       "Inference",
       {
         "current_goal_id": 1638,
-        "current_goal_text":
-          "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X195^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X195^2 | c6] c3)] =>\n copy (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1]) \n  X191^2",
+        "current_goal_text": "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X195^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X195^2 | c6] c3)] =>\n copy (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1]) \n  X191^2",
         "current_goal_predicate": "=>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -188037,8 +182064,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "copy (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1]) \n X191^2",
+                "goal_text": "copy (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1]) \n X191^2",
                 "goal_id": 1644
               }
             ],
@@ -188056,13 +182082,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -188077,8 +182101,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -188097,8 +182120,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -188117,13 +182139,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -188148,13 +182168,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -188188,8 +182206,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -188265,13 +182282,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -188286,8 +182301,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -188382,13 +182396,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -188480,13 +182492,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -188501,13 +182511,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -188522,13 +182530,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -188543,13 +182549,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -188621,13 +182625,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -188718,13 +182720,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -188758,13 +182758,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -188798,13 +182796,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -188819,13 +182815,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -189125,13 +183119,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -189150,8 +183142,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -189176,13 +183167,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -189197,8 +183186,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -189230,8 +183218,7 @@
       "Inference",
       {
         "current_goal_id": 1644,
-        "current_goal_text":
-          "copy (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1]) \n X191^2",
+        "current_goal_text": "copy (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1]) \n X191^2",
         "current_goal_predicate": "copy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -189240,8 +183227,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X195^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X195^2 | A4] A1).",
+                  "rule_text": "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X195^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X195^2 | A4] A1).",
                   "rule_loc": [ "Context", 451 ]
                 }
               ],
@@ -189259,8 +183245,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "pack? (const «Builders_18.HB_unnamed_factory_20») _",
+                "goal_text": "pack? (const «Builders_18.HB_unnamed_factory_20») _",
                 "goal_id": 1645
               },
               { "goal_text": "!", "goal_id": 1646 },
@@ -189271,8 +183256,7 @@
               { "goal_text": "copy c0 X195^2", "goal_id": 1648 },
               { "goal_text": "std.map X200^2 copy X201^2", "goal_id": 1649 },
               {
-                "goal_text":
-                  "std.rev [global (const «elpi.hole»), X195^2 | X201^2] X198^2",
+                "goal_text": "std.rev [global (const «elpi.hole»), X195^2 | X201^2] X198^2",
                 "goal_id": 1650
               }
             ],
@@ -189285,8 +183269,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X195^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X195^2 | A4] A1).",
+                "rule_text": "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X195^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X195^2 | A4] A1).",
                 "rule_loc": [ "Context", 451 ]
               }
             ],
@@ -189302,13 +183285,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -189323,8 +183304,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -189343,8 +183323,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -189363,13 +183342,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -189394,13 +183371,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -189434,8 +183409,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -189511,13 +183485,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -189532,8 +183504,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -189628,13 +183599,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -189726,13 +183695,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -189747,13 +183714,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -189768,13 +183733,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -189789,13 +183752,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -189867,13 +183828,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -189964,13 +183923,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -190004,13 +183961,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -190044,13 +183999,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -190065,13 +184018,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -190371,13 +184322,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -190396,8 +184345,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -190422,13 +184370,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -190443,8 +184389,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -190476,8 +184421,7 @@
       "Inference",
       {
         "current_goal_id": 1645,
-        "current_goal_text":
-          "pack? (const «Builders_18.HB_unnamed_factory_20») _",
+        "current_goal_text": "pack? (const «Builders_18.HB_unnamed_factory_20») _",
         "current_goal_predicate": "pack?",
         "failed_attempts": [],
         "successful_attempts": [],
@@ -190487,8 +184431,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X195^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X195^2 | A4] A1).",
+                "rule_text": "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X195^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X195^2 | A4] A1).",
                 "rule_loc": [ "Context", 451 ]
               }
             ],
@@ -190504,13 +184447,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -190525,8 +184466,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -190545,8 +184485,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -190565,13 +184504,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -190596,13 +184533,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -190636,8 +184571,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -190713,13 +184647,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -190734,8 +184666,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -190830,13 +184761,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -190928,13 +184857,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -190949,13 +184876,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -190970,13 +184895,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -190991,13 +184914,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -191069,13 +184990,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -191166,13 +185085,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -191206,13 +185123,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -191246,13 +185161,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -191267,13 +185180,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -191573,13 +185484,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -191598,8 +185507,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -191624,13 +185532,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -191645,8 +185551,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -191678,8 +185583,7 @@
       "Inference",
       {
         "current_goal_id": 1644,
-        "current_goal_text":
-          "copy (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1]) \n X191^2",
+        "current_goal_text": "copy (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1]) \n X191^2",
         "current_goal_predicate": "copy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -191688,8 +185592,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                  "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -191711,14 +185614,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "name (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1])",
+                "goal_text": "name (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1])",
                 "goal_id": 1651
               },
               { "goal_text": "!", "goal_id": 1652 },
               {
-                "goal_text":
-                  "app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1] = X191^2",
+                "goal_text": "app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1] = X191^2",
                 "goal_id": 1653
               },
               { "goal_text": "!", "goal_id": 1654 }
@@ -191732,8 +185633,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -191757,13 +185657,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -191778,8 +185676,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -191798,8 +185695,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -191818,13 +185714,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -191849,13 +185743,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -191889,8 +185781,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -191966,13 +185857,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -191987,8 +185876,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -192083,13 +185971,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -192181,13 +186067,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -192202,13 +186086,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -192223,13 +186105,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -192244,13 +186124,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -192322,13 +186200,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -192419,13 +186295,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -192459,13 +186333,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -192499,13 +186371,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -192520,13 +186390,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -192826,13 +186694,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -192851,8 +186717,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -192877,13 +186742,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -192898,8 +186761,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -192931,8 +186793,7 @@
       "Inference",
       {
         "current_goal_id": 1651,
-        "current_goal_text":
-          "name (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1])",
+        "current_goal_text": "name (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1])",
         "current_goal_predicate": "name",
         "failed_attempts": [
           { "rule": [ "BuiltinRule", [ "FFI", "name" ] ], "events": [] }
@@ -192949,8 +186810,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -192974,13 +186834,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -192995,8 +186853,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -193015,8 +186872,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -193035,13 +186891,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -193066,13 +186920,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -193106,8 +186958,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -193183,13 +187034,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -193204,8 +187053,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -193300,13 +187148,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -193398,13 +187244,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -193419,13 +187263,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -193440,13 +187282,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -193461,13 +187301,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -193539,13 +187377,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -193636,13 +187472,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -193676,13 +187510,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -193716,13 +187548,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -193737,13 +187567,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -194043,13 +187871,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -194068,8 +187894,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -194094,13 +187919,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -194115,8 +187938,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -194148,8 +187970,7 @@
       "Inference",
       {
         "current_goal_id": 1644,
-        "current_goal_text":
-          "copy (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1]) \n X191^2",
+        "current_goal_text": "copy (app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1]) \n X191^2",
         "current_goal_predicate": "copy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -194158,8 +187979,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                  "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -194182,8 +188002,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1655 },
               {
-                "goal_text":
-                  "std.map [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1] copy \n X202^2",
+                "goal_text": "std.map [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1] copy \n X202^2",
                 "goal_id": 1656
               }
             ],
@@ -194196,8 +188015,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -194221,13 +188039,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -194242,8 +188058,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -194262,8 +188077,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -194282,13 +188096,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -194313,13 +188125,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -194353,8 +188163,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -194430,13 +188239,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -194451,8 +188258,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -194547,13 +188353,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -194645,13 +188449,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -194666,13 +188468,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -194687,13 +188487,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -194708,13 +188506,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -194786,13 +188582,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -194883,13 +188677,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -194923,13 +188715,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -194963,13 +188753,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -194984,13 +188772,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -195290,13 +189076,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -195315,8 +189099,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -195341,13 +189124,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -195362,8 +189143,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -195401,8 +189181,7 @@
       "Inference",
       {
         "current_goal_id": 1656,
-        "current_goal_text":
-          "std.map [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1] copy \n X202^2",
+        "current_goal_text": "std.map [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1] copy \n X202^2",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -195411,8 +189190,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -195436,8 +189214,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "copy (global (const «Builders_18.HB_unnamed_factory_20»)) X203^2",
+                "goal_text": "copy (global (const «Builders_18.HB_unnamed_factory_20»)) X203^2",
                 "goal_id": 1657
               },
               {
@@ -195454,8 +189231,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -195474,8 +189250,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -195499,13 +189274,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -195520,8 +189293,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -195540,8 +189312,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -195560,13 +189331,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -195591,13 +189360,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -195631,8 +189398,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -195708,13 +189474,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -195729,8 +189493,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -195825,13 +189588,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -195923,13 +189684,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -195944,13 +189703,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -195965,13 +189722,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -195986,13 +189741,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -196064,13 +189817,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -196161,13 +189912,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -196201,13 +189950,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -196241,13 +189988,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -196262,13 +190007,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -196568,13 +190311,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -196593,8 +190334,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -196619,13 +190359,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -196640,8 +190378,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -196673,8 +190410,7 @@
       "Inference",
       {
         "current_goal_id": 1657,
-        "current_goal_text":
-          "copy (global (const «Builders_18.HB_unnamed_factory_20»)) X203^2",
+        "current_goal_text": "copy (global (const «Builders_18.HB_unnamed_factory_20»)) X203^2",
         "current_goal_predicate": "copy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -196683,8 +190419,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                  "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -196706,14 +190441,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "name (global (const «Builders_18.HB_unnamed_factory_20»))",
+                "goal_text": "name (global (const «Builders_18.HB_unnamed_factory_20»))",
                 "goal_id": 1659
               },
               { "goal_text": "!", "goal_id": 1660 },
               {
-                "goal_text":
-                  "global (const «Builders_18.HB_unnamed_factory_20») = X203^2",
+                "goal_text": "global (const «Builders_18.HB_unnamed_factory_20») = X203^2",
                 "goal_id": 1661
               },
               { "goal_text": "!", "goal_id": 1662 }
@@ -196727,8 +190460,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -196747,8 +190479,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -196767,8 +190498,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -196792,13 +190522,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -196813,8 +190541,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -196833,8 +190560,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -196853,13 +190579,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -196884,13 +190608,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -196924,8 +190646,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -197001,13 +190722,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -197022,8 +190741,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -197118,13 +190836,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -197216,13 +190932,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -197237,13 +190951,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -197258,13 +190970,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -197279,13 +190989,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -197357,13 +191065,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -197454,13 +191160,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -197494,13 +191198,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -197534,13 +191236,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -197555,13 +191255,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -197861,13 +191559,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -197886,8 +191582,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -197912,13 +191607,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -197933,8 +191626,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -197966,8 +191658,7 @@
       "Inference",
       {
         "current_goal_id": 1659,
-        "current_goal_text":
-          "name (global (const «Builders_18.HB_unnamed_factory_20»))",
+        "current_goal_text": "name (global (const «Builders_18.HB_unnamed_factory_20»))",
         "current_goal_predicate": "name",
         "failed_attempts": [
           { "rule": [ "BuiltinRule", [ "FFI", "name" ] ], "events": [] }
@@ -197984,8 +191675,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -198004,8 +191694,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -198024,8 +191713,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -198049,13 +191737,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -198070,8 +191756,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -198090,8 +191775,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -198110,13 +191794,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -198141,13 +191823,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -198181,8 +191861,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -198258,13 +191937,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -198279,8 +191956,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -198375,13 +192051,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -198473,13 +192147,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -198494,13 +192166,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -198515,13 +192185,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -198536,13 +192204,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -198614,13 +192280,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -198711,13 +192375,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -198751,13 +192413,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -198791,13 +192451,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -198812,13 +192470,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -199118,13 +192774,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -199143,8 +192797,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -199169,13 +192822,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -199190,8 +192841,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -199223,8 +192873,7 @@
       "Inference",
       {
         "current_goal_id": 1657,
-        "current_goal_text":
-          "copy (global (const «Builders_18.HB_unnamed_factory_20»)) X203^2",
+        "current_goal_text": "copy (global (const «Builders_18.HB_unnamed_factory_20»)) X203^2",
         "current_goal_predicate": "copy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -199285,8 +192934,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -199305,8 +192953,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -199330,13 +192977,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -199351,8 +192996,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -199371,8 +193015,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -199391,13 +193034,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -199422,13 +193063,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -199462,8 +193101,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -199539,13 +193177,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -199560,8 +193196,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -199656,13 +193291,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -199754,13 +193387,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -199775,13 +193406,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -199796,13 +193425,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -199817,13 +193444,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -199895,13 +193520,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -199992,13 +193615,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -200032,13 +193653,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -200072,13 +193691,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -200093,13 +193710,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -200399,13 +194014,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -200424,8 +194037,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -200450,13 +194062,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -200471,8 +194081,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -200519,8 +194128,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -200552,8 +194160,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -200572,8 +194179,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -200592,8 +194198,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -200617,13 +194222,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -200638,8 +194241,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -200658,8 +194260,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -200678,13 +194279,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -200709,13 +194308,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -200749,8 +194346,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -200826,13 +194422,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -200847,8 +194441,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -200943,13 +194536,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -201041,13 +194632,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -201062,13 +194651,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -201083,13 +194670,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -201104,13 +194689,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -201182,13 +194765,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -201279,13 +194860,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -201319,13 +194898,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -201359,13 +194936,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -201380,13 +194955,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -201686,13 +195259,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -201711,8 +195282,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -201737,13 +195307,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -201758,8 +195326,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -201800,8 +195367,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                  "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -201814,8 +195380,7 @@
                 }
               ],
               "events": [
-                [ "Assign", "A0 := c0" ],
-                [ "Assign", "A1 := X205^2" ]
+                [ "Assign", "A0 := c0" ], [ "Assign", "A1 := X205^2" ]
               ]
             },
             "siblings": [
@@ -201833,8 +195398,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -201853,8 +195417,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -201873,8 +195436,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -201893,8 +195455,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -201918,13 +195479,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -201939,8 +195498,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -201959,8 +195517,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -201979,13 +195536,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -202010,13 +195565,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -202050,8 +195603,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -202127,13 +195679,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -202148,8 +195698,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -202244,13 +195793,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -202342,13 +195889,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -202363,13 +195908,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -202384,13 +195927,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -202405,13 +195946,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -202483,13 +196022,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -202580,13 +196117,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -202620,13 +196155,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -202660,13 +196193,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -202681,13 +196212,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -202987,13 +196516,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -203012,8 +196539,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -203038,13 +196564,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -203059,8 +196583,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -203116,8 +196639,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -203136,8 +196658,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -203156,8 +196677,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -203176,8 +196696,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -203201,13 +196720,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -203222,8 +196739,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -203242,8 +196758,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -203262,13 +196777,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -203293,13 +196806,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -203333,8 +196844,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -203410,13 +196920,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -203431,8 +196939,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -203527,13 +197034,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -203625,13 +197130,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -203646,13 +197149,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -203667,13 +197168,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -203688,13 +197187,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -203766,13 +197263,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -203863,13 +197358,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -203903,13 +197396,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -203943,13 +197434,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -203964,13 +197453,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -204270,13 +197757,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -204295,8 +197780,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -204321,13 +197805,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -204342,8 +197824,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -204404,8 +197885,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -204424,8 +197904,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -204444,8 +197923,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -204464,8 +197942,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -204489,13 +197966,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -204510,8 +197985,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -204530,8 +198004,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -204550,13 +198023,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -204581,13 +198052,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -204621,8 +198090,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -204698,13 +198166,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -204719,8 +198185,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -204815,13 +198280,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -204913,13 +198376,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -204934,13 +198395,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -204955,13 +198414,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -204976,13 +198433,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -205054,13 +198509,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -205151,13 +198604,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -205191,13 +198642,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -205231,13 +198680,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -205252,13 +198699,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -205558,13 +199003,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -205583,8 +199026,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -205609,13 +199051,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -205630,8 +199070,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -205693,8 +199132,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -205713,8 +199151,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -205733,8 +199170,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -205753,8 +199189,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -205778,13 +199213,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -205799,8 +199232,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -205819,8 +199251,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -205839,13 +199270,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -205870,13 +199299,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -205910,8 +199337,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -205987,13 +199413,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -206008,8 +199432,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -206104,13 +199527,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -206202,13 +199623,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -206223,13 +199642,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -206244,13 +199661,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -206265,13 +199680,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -206343,13 +199756,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -206440,13 +199851,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -206480,13 +199889,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -206520,13 +199927,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -206541,13 +199946,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -206847,13 +200250,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -206872,8 +200273,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -206898,13 +200298,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -206919,8 +200317,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -206967,8 +200364,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -207000,8 +200396,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -207020,8 +200415,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -207040,8 +200434,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -207060,8 +200453,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -207085,13 +200477,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -207106,8 +200496,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -207126,8 +200515,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -207146,13 +200534,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -207177,13 +200563,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -207217,8 +200601,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -207294,13 +200677,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -207315,8 +200696,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -207411,13 +200791,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -207509,13 +200887,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -207530,13 +200906,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -207551,13 +200925,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -207572,13 +200944,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -207650,13 +201020,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -207747,13 +201115,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -207787,13 +201153,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -207827,13 +201191,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -207848,13 +201210,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -208154,13 +201514,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -208179,8 +201537,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -208205,13 +201562,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -208226,8 +201581,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -208268,8 +201622,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                  "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -208282,8 +201635,7 @@
                 }
               ],
               "events": [
-                [ "Assign", "A0 := c1" ],
-                [ "Assign", "A1 := X207^2" ]
+                [ "Assign", "A0 := c1" ], [ "Assign", "A1 := X207^2" ]
               ]
             },
             "siblings": [
@@ -208301,8 +201653,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -208321,8 +201672,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -208341,8 +201691,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -208361,8 +201710,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -208381,8 +201729,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -208406,13 +201753,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -208427,8 +201772,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -208447,8 +201791,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -208467,13 +201810,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -208498,13 +201839,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -208538,8 +201877,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -208615,13 +201953,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -208636,8 +201972,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -208732,13 +202067,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -208830,13 +202163,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -208851,13 +202182,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -208872,13 +202201,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -208893,13 +202220,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -208971,13 +202296,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -209068,13 +202391,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -209108,13 +202429,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -209148,13 +202467,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -209169,13 +202486,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -209475,13 +202790,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -209500,8 +202813,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -209526,13 +202838,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -209547,8 +202857,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -209604,8 +202913,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -209624,8 +202932,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -209644,8 +202951,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -209664,8 +202970,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -209684,8 +202989,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -209709,13 +203013,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -209730,8 +203032,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -209750,8 +203051,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -209770,13 +203070,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -209801,13 +203099,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -209841,8 +203137,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -209918,13 +203213,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -209939,8 +203232,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -210035,13 +203327,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -210133,13 +203423,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -210154,13 +203442,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -210175,13 +203461,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -210196,13 +203480,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -210274,13 +203556,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -210371,13 +203651,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -210411,13 +203689,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -210451,13 +203727,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -210472,13 +203746,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -210778,13 +204050,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -210803,8 +204073,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -210829,13 +204098,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -210850,8 +204117,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -210912,8 +204178,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -210932,8 +204197,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -210952,8 +204216,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -210972,8 +204235,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -210992,8 +204254,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -211017,13 +204278,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -211038,8 +204297,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -211058,8 +204316,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -211078,13 +204335,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -211109,13 +204364,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -211149,8 +204402,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -211226,13 +204478,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -211247,8 +204497,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -211343,13 +204592,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -211441,13 +204688,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -211462,13 +204707,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -211483,13 +204726,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -211504,13 +204745,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -211582,13 +204821,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -211679,13 +204916,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -211719,13 +204954,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -211759,13 +204992,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -211780,13 +205011,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -212086,13 +205315,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -212111,8 +205338,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -212137,13 +205363,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -212158,8 +205382,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -212221,8 +205444,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -212241,8 +205463,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -212261,8 +205482,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -212281,8 +205501,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -212301,8 +205520,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -212326,13 +205544,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -212347,8 +205563,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -212367,8 +205582,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -212387,13 +205601,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -212418,13 +205630,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -212458,8 +205668,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -212535,13 +205744,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -212556,8 +205763,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -212652,13 +205858,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -212750,13 +205954,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -212771,13 +205973,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -212792,13 +205992,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -212813,13 +206011,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -212891,13 +206087,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -212988,13 +206182,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -213028,13 +206220,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -213068,13 +206258,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -213089,13 +206277,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -213395,13 +206581,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -213420,8 +206604,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -213446,13 +206629,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -213467,8 +206648,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -213558,8 +206738,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -213578,8 +206757,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -213598,8 +206776,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -213618,8 +206795,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -213643,13 +206819,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -213664,8 +206838,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -213684,8 +206857,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -213704,13 +206876,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -213735,13 +206905,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -213775,8 +206943,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -213852,13 +207019,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -213873,8 +207038,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -213969,13 +207133,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -214067,13 +207229,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -214088,13 +207248,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -214109,13 +207267,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -214130,13 +207286,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -214208,13 +207362,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -214305,13 +207457,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -214345,13 +207495,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -214385,13 +207533,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -214406,13 +207552,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -214712,13 +207856,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -214737,8 +207879,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -214763,13 +207904,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -214784,8 +207923,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -214817,8 +207955,7 @@
       "Inference",
       {
         "current_goal_id": 1635,
-        "current_goal_text":
-          "std.map [app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n (copy-pack-holes c0) X192^2",
+        "current_goal_text": "std.map [app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n (copy-pack-holes c0) X192^2",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -214827,8 +207964,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -214852,8 +207988,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "copy-pack-holes c0 \n (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]) X209^2",
+                "goal_text": "copy-pack-holes c0 \n (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]) X209^2",
                 "goal_id": 1678
               },
               {
@@ -214870,8 +208005,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -214890,8 +208024,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -214910,8 +208043,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -214930,13 +208062,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -214961,13 +208091,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -215001,8 +208129,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -215078,13 +208205,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -215099,8 +208224,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -215195,13 +208319,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -215293,13 +208415,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -215314,13 +208434,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -215335,13 +208453,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -215356,13 +208472,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -215434,13 +208548,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -215531,13 +208643,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -215571,13 +208681,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -215611,13 +208719,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -215632,13 +208738,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -215938,13 +209042,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -215963,8 +209065,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -215989,13 +209090,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -216010,8 +209109,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -216043,8 +209141,7 @@
       "Inference",
       {
         "current_goal_id": 1678,
-        "current_goal_text":
-          "copy-pack-holes c0 \n (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]) X209^2",
+        "current_goal_text": "copy-pack-holes c0 \n (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]) X209^2",
         "current_goal_predicate": "copy-pack-holes",
         "failed_attempts": [],
         "successful_attempts": [
@@ -216053,13 +209150,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                  "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                       "line": 318,
                       "column": 0,
                       "character": 12866
@@ -216086,8 +209181,7 @@
                 "goal_id": 1681
               },
               {
-                "goal_text":
-                  "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X213^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X213^2 | c6] c3) | X212^2]\n =>\n copy (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]) \n  X209^2",
+                "goal_text": "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X213^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X213^2 | c6] c3) | X212^2]\n =>\n copy (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]) \n  X209^2",
                 "goal_id": 1682
               }
             ],
@@ -216100,13 +209194,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -216121,8 +209213,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -216141,8 +209232,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -216161,8 +209251,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -216181,13 +209270,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -216212,13 +209299,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -216252,8 +209337,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -216329,13 +209413,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -216350,8 +209432,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -216446,13 +209527,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -216544,13 +209623,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -216565,13 +209642,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -216586,13 +209661,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -216607,13 +209680,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -216685,13 +209756,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -216782,13 +209851,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -216822,13 +209889,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -216862,13 +209927,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -216883,13 +209946,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -217189,13 +210250,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -217214,8 +210273,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -217240,13 +210298,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -217261,8 +210317,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -217303,13 +210358,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                  "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 200,
                       "column": 0,
                       "character": 7260
@@ -217338,13 +210391,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -217359,13 +210410,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -217380,8 +210429,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -217400,8 +210448,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -217420,8 +210467,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -217440,13 +210486,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -217471,13 +210515,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -217511,8 +210553,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -217588,13 +210629,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -217609,8 +210648,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -217705,13 +210743,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -217803,13 +210839,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -217824,13 +210858,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -217845,13 +210877,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -217866,13 +210896,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -217944,13 +210972,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -218041,13 +211067,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -218081,13 +211105,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -218121,13 +211143,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -218142,13 +211162,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -218448,13 +211466,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -218473,8 +211489,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -218499,13 +211514,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -218520,8 +211533,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -218562,8 +211574,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                  "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -218582,8 +211593,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "findall_solutions (local-canonical X214^2) X215^2",
+                "goal_text": "findall_solutions (local-canonical X214^2) X215^2",
                 "goal_id": 1685
               }
             ],
@@ -218596,8 +211606,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -218616,13 +211625,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -218637,13 +211644,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -218658,8 +211663,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -218678,8 +211682,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -218698,8 +211701,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -218718,13 +211720,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -218749,13 +211749,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -218789,8 +211787,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -218866,13 +211863,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -218887,8 +211882,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -218983,13 +211977,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -219081,13 +212073,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -219102,13 +212092,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -219123,13 +212111,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -219144,13 +212130,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -219222,13 +212206,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -219319,13 +212301,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -219359,13 +212339,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -219399,13 +212377,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -219420,13 +212396,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -219726,13 +212700,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -219751,8 +212723,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -219777,13 +212748,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -219798,8 +212767,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -219831,8 +212799,7 @@
       "Findall",
       {
         "findall_goal_id": 1685,
-        "findall_goal_text":
-          "findall_solutions (local-canonical X214^2) X215^2",
+        "findall_goal_text": "findall_solutions (local-canonical X214^2) X215^2",
         "findall_cards": [
           {
             "step_id": 0,
@@ -219872,8 +212839,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -219892,13 +212858,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -219913,13 +212877,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -219934,8 +212896,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -219954,8 +212915,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -219974,8 +212934,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -219994,13 +212953,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -220025,13 +212982,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -220065,8 +213020,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -220142,13 +213096,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -220163,8 +213115,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -220259,13 +213210,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -220357,13 +213306,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -220378,13 +213325,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -220399,13 +213344,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -220420,13 +213363,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -220498,13 +213439,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -220595,13 +213534,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -220635,13 +213572,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -220675,13 +213610,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -220696,13 +213629,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -221002,13 +213933,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -221027,8 +213956,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -221053,13 +213981,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -221074,8 +214000,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -221159,13 +214084,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -221180,13 +214103,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -221201,8 +214122,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -221221,8 +214141,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -221241,8 +214160,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -221261,13 +214179,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -221292,13 +214208,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -221332,8 +214246,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -221409,13 +214322,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -221430,8 +214341,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -221526,13 +214436,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -221624,13 +214532,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -221645,13 +214551,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -221666,13 +214570,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -221687,13 +214589,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -221765,13 +214665,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -221862,13 +214760,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -221902,13 +214798,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -221942,13 +214836,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -221963,13 +214855,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -222269,13 +215159,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -222294,8 +215182,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -222320,13 +215207,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -222341,8 +215226,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -222387,8 +215271,7 @@
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
                       "line": 196,
                       "column": 0,
                       "character": 7411
@@ -222412,8 +215295,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 7411
@@ -222428,13 +215310,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -222449,8 +215329,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -222469,8 +215348,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -222489,8 +215367,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -222509,13 +215386,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -222540,13 +215415,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -222580,8 +215453,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -222657,13 +215529,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -222678,8 +215548,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -222774,13 +215643,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -222872,13 +215739,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -222893,13 +215758,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -222914,13 +215777,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -222935,13 +215796,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -223013,13 +215872,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -223110,13 +215967,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -223150,13 +216005,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -223190,13 +216043,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -223211,13 +216062,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -223517,13 +216366,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -223542,8 +216389,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -223568,13 +216414,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -223589,8 +216433,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -223622,8 +216465,7 @@
       "Inference",
       {
         "current_goal_id": 1682,
-        "current_goal_text":
-          "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X213^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X213^2 | c6] c3)] =>\n copy (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]) \n  X209^2",
+        "current_goal_text": "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X213^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X213^2 | c6] c3)] =>\n copy (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]) \n  X209^2",
         "current_goal_predicate": "=>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -223634,8 +216476,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "copy (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]) \n X209^2",
+                "goal_text": "copy (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]) \n X209^2",
                 "goal_id": 1688
               }
             ],
@@ -223653,13 +216494,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -223674,8 +216513,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -223694,8 +216532,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -223714,8 +216551,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -223734,13 +216570,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -223765,13 +216599,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -223805,8 +216637,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -223882,13 +216713,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -223903,8 +216732,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -223999,13 +216827,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -224097,13 +216923,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -224118,13 +216942,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -224139,13 +216961,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -224160,13 +216980,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -224238,13 +217056,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -224335,13 +217151,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -224375,13 +217189,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -224415,13 +217227,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -224436,13 +217246,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -224742,13 +217550,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -224767,8 +217573,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -224793,13 +217598,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -224814,8 +217617,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -224847,8 +217649,7 @@
       "Inference",
       {
         "current_goal_id": 1688,
-        "current_goal_text":
-          "copy (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]) \n X209^2",
+        "current_goal_text": "copy (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]) \n X209^2",
         "current_goal_predicate": "copy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -224857,8 +217658,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X213^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X213^2 | A4] A1).",
+                  "rule_text": "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X213^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X213^2 | A4] A1).",
                   "rule_loc": [ "Context", 485 ]
                 }
               ],
@@ -224876,8 +217676,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "pack? (const «Builders_18.HB_unnamed_factory_22») _",
+                "goal_text": "pack? (const «Builders_18.HB_unnamed_factory_22») _",
                 "goal_id": 1689
               },
               { "goal_text": "!", "goal_id": 1690 },
@@ -224888,8 +217687,7 @@
               { "goal_text": "copy c0 X213^2", "goal_id": 1692 },
               { "goal_text": "std.map X218^2 copy X219^2", "goal_id": 1693 },
               {
-                "goal_text":
-                  "std.rev [global (const «elpi.hole»), X213^2 | X219^2] X216^2",
+                "goal_text": "std.rev [global (const «elpi.hole»), X213^2 | X219^2] X216^2",
                 "goal_id": 1694
               }
             ],
@@ -224902,8 +217700,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X213^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X213^2 | A4] A1).",
+                "rule_text": "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X213^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X213^2 | A4] A1).",
                 "rule_loc": [ "Context", 485 ]
               }
             ],
@@ -224919,13 +217716,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -224940,8 +217735,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -224960,8 +217754,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -224980,8 +217773,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -225000,13 +217792,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -225031,13 +217821,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -225071,8 +217859,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -225148,13 +217935,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -225169,8 +217954,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -225265,13 +218049,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -225363,13 +218145,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -225384,13 +218164,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -225405,13 +218183,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -225426,13 +218202,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -225504,13 +218278,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -225601,13 +218373,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -225641,13 +218411,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -225681,13 +218449,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -225702,13 +218468,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -226008,13 +218772,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -226033,8 +218795,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -226059,13 +218820,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -226080,8 +218839,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -226113,8 +218871,7 @@
       "Inference",
       {
         "current_goal_id": 1689,
-        "current_goal_text":
-          "pack? (const «Builders_18.HB_unnamed_factory_22») _",
+        "current_goal_text": "pack? (const «Builders_18.HB_unnamed_factory_22») _",
         "current_goal_predicate": "pack?",
         "failed_attempts": [],
         "successful_attempts": [],
@@ -226124,8 +218881,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X213^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X213^2 | A4] A1).",
+                "rule_text": "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X213^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X213^2 | A4] A1).",
                 "rule_loc": [ "Context", 485 ]
               }
             ],
@@ -226141,13 +218897,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -226162,8 +218916,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -226182,8 +218935,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -226202,8 +218954,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -226222,13 +218973,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -226253,13 +219002,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -226293,8 +219040,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -226370,13 +219116,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -226391,8 +219135,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -226487,13 +219230,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -226585,13 +219326,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -226606,13 +219345,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -226627,13 +219364,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -226648,13 +219383,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -226726,13 +219459,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -226823,13 +219554,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -226863,13 +219592,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -226903,13 +219630,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -226924,13 +219649,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -227230,13 +219953,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -227255,8 +219976,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -227281,13 +220001,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -227302,8 +220020,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -227335,8 +220052,7 @@
       "Inference",
       {
         "current_goal_id": 1688,
-        "current_goal_text":
-          "copy (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]) \n X209^2",
+        "current_goal_text": "copy (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]) \n X209^2",
         "current_goal_predicate": "copy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -227345,8 +220061,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                  "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -227368,14 +220083,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "name (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1])",
+                "goal_text": "name (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1])",
                 "goal_id": 1695
               },
               { "goal_text": "!", "goal_id": 1696 },
               {
-                "goal_text":
-                  "app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1] = X209^2",
+                "goal_text": "app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1] = X209^2",
                 "goal_id": 1697
               },
               { "goal_text": "!", "goal_id": 1698 }
@@ -227389,8 +220102,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -227414,13 +220126,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -227435,8 +220145,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -227455,8 +220164,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -227475,8 +220183,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -227495,13 +220202,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -227526,13 +220231,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -227566,8 +220269,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -227643,13 +220345,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -227664,8 +220364,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -227760,13 +220459,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -227858,13 +220555,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -227879,13 +220574,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -227900,13 +220593,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -227921,13 +220612,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -227999,13 +220688,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -228096,13 +220783,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -228136,13 +220821,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -228176,13 +220859,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -228197,13 +220878,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -228503,13 +221182,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -228528,8 +221205,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -228554,13 +221230,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -228575,8 +221249,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -228608,8 +221281,7 @@
       "Inference",
       {
         "current_goal_id": 1695,
-        "current_goal_text":
-          "name (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1])",
+        "current_goal_text": "name (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1])",
         "current_goal_predicate": "name",
         "failed_attempts": [
           { "rule": [ "BuiltinRule", [ "FFI", "name" ] ], "events": [] }
@@ -228626,8 +221298,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -228651,13 +221322,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -228672,8 +221341,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -228692,8 +221360,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -228712,8 +221379,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -228732,13 +221398,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -228763,13 +221427,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -228803,8 +221465,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -228880,13 +221541,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -228901,8 +221560,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -228997,13 +221655,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -229095,13 +221751,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -229116,13 +221770,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -229137,13 +221789,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -229158,13 +221808,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -229236,13 +221884,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -229333,13 +221979,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -229373,13 +222017,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -229413,13 +222055,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -229434,13 +222074,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -229740,13 +222378,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -229765,8 +222401,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -229791,13 +222426,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -229812,8 +222445,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -229845,8 +222477,7 @@
       "Inference",
       {
         "current_goal_id": 1688,
-        "current_goal_text":
-          "copy (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]) \n X209^2",
+        "current_goal_text": "copy (app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]) \n X209^2",
         "current_goal_predicate": "copy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -229855,8 +222486,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                  "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -229879,8 +222509,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1699 },
               {
-                "goal_text":
-                  "std.map [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1] copy \n X220^2",
+                "goal_text": "std.map [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1] copy \n X220^2",
                 "goal_id": 1700
               }
             ],
@@ -229893,8 +222522,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -229918,13 +222546,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -229939,8 +222565,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -229959,8 +222584,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -229979,8 +222603,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -229999,13 +222622,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -230030,13 +222651,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -230070,8 +222689,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -230147,13 +222765,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -230168,8 +222784,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -230264,13 +222879,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -230362,13 +222975,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -230383,13 +222994,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -230404,13 +223013,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -230425,13 +223032,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -230503,13 +223108,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -230600,13 +223203,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -230640,13 +223241,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -230680,13 +223279,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -230701,13 +223298,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -231007,13 +223602,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -231032,8 +223625,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -231058,13 +223650,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -231079,8 +223669,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -231118,8 +223707,7 @@
       "Inference",
       {
         "current_goal_id": 1700,
-        "current_goal_text":
-          "std.map [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1] copy \n X220^2",
+        "current_goal_text": "std.map [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1] copy \n X220^2",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -231128,8 +223716,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -231153,8 +223740,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "copy (global (const «Builders_18.HB_unnamed_factory_22»)) X221^2",
+                "goal_text": "copy (global (const «Builders_18.HB_unnamed_factory_22»)) X221^2",
                 "goal_id": 1701
               },
               {
@@ -231171,8 +223757,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -231191,8 +223776,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -231216,13 +223800,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -231237,8 +223819,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -231257,8 +223838,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -231277,8 +223857,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -231297,13 +223876,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -231328,13 +223905,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -231368,8 +223943,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -231445,13 +224019,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -231466,8 +224038,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -231562,13 +224133,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -231660,13 +224229,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -231681,13 +224248,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -231702,13 +224267,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -231723,13 +224286,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -231801,13 +224362,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -231898,13 +224457,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -231938,13 +224495,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -231978,13 +224533,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -231999,13 +224552,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -232305,13 +224856,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -232330,8 +224879,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -232356,13 +224904,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -232377,8 +224923,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -232410,8 +224955,7 @@
       "Inference",
       {
         "current_goal_id": 1701,
-        "current_goal_text":
-          "copy (global (const «Builders_18.HB_unnamed_factory_22»)) X221^2",
+        "current_goal_text": "copy (global (const «Builders_18.HB_unnamed_factory_22»)) X221^2",
         "current_goal_predicate": "copy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -232420,8 +224964,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                  "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -232443,14 +224986,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "name (global (const «Builders_18.HB_unnamed_factory_22»))",
+                "goal_text": "name (global (const «Builders_18.HB_unnamed_factory_22»))",
                 "goal_id": 1703
               },
               { "goal_text": "!", "goal_id": 1704 },
               {
-                "goal_text":
-                  "global (const «Builders_18.HB_unnamed_factory_22») = X221^2",
+                "goal_text": "global (const «Builders_18.HB_unnamed_factory_22») = X221^2",
                 "goal_id": 1705
               },
               { "goal_text": "!", "goal_id": 1706 }
@@ -232464,8 +225005,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -232484,8 +225024,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -232504,8 +225043,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -232529,13 +225067,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -232550,8 +225086,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -232570,8 +225105,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -232590,8 +225124,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -232610,13 +225143,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -232641,13 +225172,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -232681,8 +225210,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -232758,13 +225286,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -232779,8 +225305,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -232875,13 +225400,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -232973,13 +225496,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -232994,13 +225515,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -233015,13 +225534,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -233036,13 +225553,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -233114,13 +225629,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -233211,13 +225724,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -233251,13 +225762,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -233291,13 +225800,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -233312,13 +225819,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -233618,13 +226123,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -233643,8 +226146,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -233669,13 +226171,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -233690,8 +226190,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -233723,8 +226222,7 @@
       "Inference",
       {
         "current_goal_id": 1703,
-        "current_goal_text":
-          "name (global (const «Builders_18.HB_unnamed_factory_22»))",
+        "current_goal_text": "name (global (const «Builders_18.HB_unnamed_factory_22»))",
         "current_goal_predicate": "name",
         "failed_attempts": [
           { "rule": [ "BuiltinRule", [ "FFI", "name" ] ], "events": [] }
@@ -233741,8 +226239,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -233761,8 +226258,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -233781,8 +226277,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -233806,13 +226301,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -233827,8 +226320,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -233847,8 +226339,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -233867,8 +226358,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -233887,13 +226377,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -233918,13 +226406,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -233958,8 +226444,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -234035,13 +226520,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -234056,8 +226539,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -234152,13 +226634,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -234250,13 +226730,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -234271,13 +226749,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -234292,13 +226768,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -234313,13 +226787,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -234391,13 +226863,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -234488,13 +226958,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -234528,13 +226996,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -234568,13 +227034,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -234589,13 +227053,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -234895,13 +227357,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -234920,8 +227380,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -234946,13 +227405,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -234967,8 +227424,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -235000,8 +227456,7 @@
       "Inference",
       {
         "current_goal_id": 1701,
-        "current_goal_text":
-          "copy (global (const «Builders_18.HB_unnamed_factory_22»)) X221^2",
+        "current_goal_text": "copy (global (const «Builders_18.HB_unnamed_factory_22»)) X221^2",
         "current_goal_predicate": "copy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -235062,8 +227517,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -235082,8 +227536,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -235107,13 +227560,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -235128,8 +227579,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -235148,8 +227598,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -235168,8 +227617,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -235188,13 +227636,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -235219,13 +227665,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -235259,8 +227703,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -235336,13 +227779,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -235357,8 +227798,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -235453,13 +227893,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -235551,13 +227989,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -235572,13 +228008,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -235593,13 +228027,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -235614,13 +228046,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -235692,13 +228122,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -235789,13 +228217,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -235829,13 +228255,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -235869,13 +228293,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -235890,13 +228312,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -236196,13 +228616,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -236221,8 +228639,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -236247,13 +228664,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -236268,8 +228683,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -236316,8 +228730,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -236349,8 +228762,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -236369,8 +228781,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -236389,8 +228800,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -236414,13 +228824,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -236435,8 +228843,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -236455,8 +228862,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -236475,8 +228881,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -236495,13 +228900,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -236526,13 +228929,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -236566,8 +228967,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -236643,13 +229043,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -236664,8 +229062,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -236760,13 +229157,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -236858,13 +229253,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -236879,13 +229272,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -236900,13 +229291,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -236921,13 +229310,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -236999,13 +229386,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -237096,13 +229481,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -237136,13 +229519,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -237176,13 +229557,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -237197,13 +229576,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -237503,13 +229880,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -237528,8 +229903,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -237554,13 +229928,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -237575,8 +229947,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -237617,8 +229988,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                  "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -237631,8 +230001,7 @@
                 }
               ],
               "events": [
-                [ "Assign", "A0 := c0" ],
-                [ "Assign", "A1 := X223^2" ]
+                [ "Assign", "A0 := c0" ], [ "Assign", "A1 := X223^2" ]
               ]
             },
             "siblings": [
@@ -237650,8 +230019,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -237670,8 +230038,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -237690,8 +230057,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -237710,8 +230076,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -237735,13 +230100,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -237756,8 +230119,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -237776,8 +230138,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -237796,8 +230157,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -237816,13 +230176,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -237847,13 +230205,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -237887,8 +230243,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -237964,13 +230319,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -237985,8 +230338,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -238081,13 +230433,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -238179,13 +230529,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -238200,13 +230548,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -238221,13 +230567,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -238242,13 +230586,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -238320,13 +230662,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -238417,13 +230757,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -238457,13 +230795,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -238497,13 +230833,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -238518,13 +230852,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -238824,13 +231156,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -238849,8 +231179,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -238875,13 +231204,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -238896,8 +231223,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -238953,8 +231279,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -238973,8 +231298,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -238993,8 +231317,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -239013,8 +231336,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -239038,13 +231360,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -239059,8 +231379,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -239079,8 +231398,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -239099,8 +231417,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -239119,13 +231436,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -239150,13 +231465,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -239190,8 +231503,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -239267,13 +231579,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -239288,8 +231598,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -239384,13 +231693,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -239482,13 +231789,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -239503,13 +231808,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -239524,13 +231827,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -239545,13 +231846,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -239623,13 +231922,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -239720,13 +232017,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -239760,13 +232055,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -239800,13 +232093,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -239821,13 +232112,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -240127,13 +232416,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -240152,8 +232439,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -240178,13 +232464,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -240199,8 +232483,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -240261,8 +232544,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -240281,8 +232563,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -240301,8 +232582,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -240321,8 +232601,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -240346,13 +232625,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -240367,8 +232644,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -240387,8 +232663,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -240407,8 +232682,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -240427,13 +232701,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -240458,13 +232730,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -240498,8 +232768,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -240575,13 +232844,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -240596,8 +232863,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -240692,13 +232958,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -240790,13 +233054,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -240811,13 +233073,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -240832,13 +233092,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -240853,13 +233111,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -240931,13 +233187,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -241028,13 +233282,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -241068,13 +233320,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -241108,13 +233358,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -241129,13 +233377,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -241435,13 +233681,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -241460,8 +233704,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -241486,13 +233729,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -241507,8 +233748,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -241570,8 +233810,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -241590,8 +233829,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -241610,8 +233848,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -241630,8 +233867,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -241655,13 +233891,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -241676,8 +233910,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -241696,8 +233929,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -241716,8 +233948,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -241736,13 +233967,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -241767,13 +233996,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -241807,8 +234034,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -241884,13 +234110,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -241905,8 +234129,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -242001,13 +234224,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -242099,13 +234320,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -242120,13 +234339,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -242141,13 +234358,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -242162,13 +234377,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -242240,13 +234453,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -242337,13 +234548,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -242377,13 +234586,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -242417,13 +234624,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -242438,13 +234643,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -242744,13 +234947,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -242769,8 +234970,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -242795,13 +234995,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -242816,8 +235014,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -242864,8 +235061,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -242897,8 +235093,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -242917,8 +235112,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -242937,8 +235131,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -242957,8 +235150,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -242982,13 +235174,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -243003,8 +235193,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -243023,8 +235212,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -243043,8 +235231,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -243063,13 +235250,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -243094,13 +235279,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -243134,8 +235317,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -243211,13 +235393,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -243232,8 +235412,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -243328,13 +235507,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -243426,13 +235603,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -243447,13 +235622,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -243468,13 +235641,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -243489,13 +235660,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -243567,13 +235736,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -243664,13 +235831,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -243704,13 +235869,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -243744,13 +235907,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -243765,13 +235926,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -244071,13 +236230,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -244096,8 +236253,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -244122,13 +236278,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -244143,8 +236297,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -244185,8 +236338,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                  "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -244199,8 +236351,7 @@
                 }
               ],
               "events": [
-                [ "Assign", "A0 := c1" ],
-                [ "Assign", "A1 := X225^2" ]
+                [ "Assign", "A0 := c1" ], [ "Assign", "A1 := X225^2" ]
               ]
             },
             "siblings": [
@@ -244218,8 +236369,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -244238,8 +236388,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -244258,8 +236407,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -244278,8 +236426,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -244298,8 +236445,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -244323,13 +236469,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -244344,8 +236488,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -244364,8 +236507,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -244384,8 +236526,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -244404,13 +236545,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -244435,13 +236574,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -244475,8 +236612,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -244552,13 +236688,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -244573,8 +236707,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -244669,13 +236802,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -244767,13 +236898,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -244788,13 +236917,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -244809,13 +236936,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -244830,13 +236955,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -244908,13 +237031,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -245005,13 +237126,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -245045,13 +237164,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -245085,13 +237202,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -245106,13 +237221,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -245412,13 +237525,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -245437,8 +237548,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -245463,13 +237573,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -245484,8 +237592,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -245541,8 +237648,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -245561,8 +237667,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -245581,8 +237686,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -245601,8 +237705,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -245621,8 +237724,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -245646,13 +237748,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -245667,8 +237767,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -245687,8 +237786,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -245707,8 +237805,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -245727,13 +237824,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -245758,13 +237853,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -245798,8 +237891,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -245875,13 +237967,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -245896,8 +237986,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -245992,13 +238081,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -246090,13 +238177,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -246111,13 +238196,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -246132,13 +238215,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -246153,13 +238234,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -246231,13 +238310,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -246328,13 +238405,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -246368,13 +238443,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -246408,13 +238481,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -246429,13 +238500,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -246735,13 +238804,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -246760,8 +238827,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -246786,13 +238852,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -246807,8 +238871,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -246869,8 +238932,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -246889,8 +238951,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -246909,8 +238970,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -246929,8 +238989,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -246949,8 +239008,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -246974,13 +239032,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -246995,8 +239051,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -247015,8 +239070,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -247035,8 +239089,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -247055,13 +239108,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -247086,13 +239137,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -247126,8 +239175,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -247203,13 +239251,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -247224,8 +239270,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -247320,13 +239365,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -247418,13 +239461,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -247439,13 +239480,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -247460,13 +239499,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -247481,13 +239518,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -247559,13 +239594,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -247656,13 +239689,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -247696,13 +239727,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -247736,13 +239765,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -247757,13 +239784,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -248063,13 +240088,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -248088,8 +240111,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -248114,13 +240136,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -248135,8 +240155,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -248198,8 +240217,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -248218,8 +240236,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -248238,8 +240255,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -248258,8 +240274,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -248278,8 +240293,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -248303,13 +240317,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -248324,8 +240336,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -248344,8 +240355,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -248364,8 +240374,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -248384,13 +240393,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -248415,13 +240422,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -248455,8 +240460,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -248532,13 +240536,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -248553,8 +240555,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -248649,13 +240650,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -248747,13 +240746,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -248768,13 +240765,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -248789,13 +240784,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -248810,13 +240803,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -248888,13 +240879,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -248985,13 +240974,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -249025,13 +241012,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -249065,13 +241050,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -249086,13 +241069,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -249392,13 +241373,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -249417,8 +241396,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -249443,13 +241421,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -249464,8 +241440,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -249555,8 +241530,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -249575,8 +241549,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -249595,8 +241568,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -249615,8 +241587,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -249640,13 +241611,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -249661,8 +241630,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -249681,8 +241649,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -249701,8 +241668,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -249721,13 +241687,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -249752,13 +241716,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -249792,8 +241754,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -249869,13 +241830,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -249890,8 +241849,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -249986,13 +241944,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -250084,13 +242040,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -250105,13 +242059,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -250126,13 +242078,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -250147,13 +242097,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -250225,13 +242173,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -250322,13 +242268,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -250362,13 +242306,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -250402,13 +242344,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -250423,13 +242363,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -250729,13 +242667,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -250754,8 +242690,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -250780,13 +242715,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -250801,8 +242734,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -250886,8 +242818,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -250906,8 +242837,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -250926,8 +242856,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -250946,13 +242875,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -250977,13 +242904,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -251017,8 +242942,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -251094,13 +243018,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -251115,8 +243037,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -251211,13 +243132,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -251309,13 +243228,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -251330,13 +243247,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -251351,13 +243266,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -251372,13 +243285,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -251450,13 +243361,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -251547,13 +243456,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -251587,13 +243494,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -251627,13 +243532,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -251648,13 +243551,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -251954,13 +243855,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -251979,8 +243878,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -252005,13 +243903,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -252026,8 +243922,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -252059,8 +243954,7 @@
       "Inference",
       {
         "current_goal_id": 1613,
-        "current_goal_text":
-          "std.spy\n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n   X175^1)",
+        "current_goal_text": "std.spy\n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n   X175^1)",
         "current_goal_predicate": "std.spy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -252069,8 +243963,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                  "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                   "rule_loc": [
                     "File",
                     {
@@ -252092,23 +243985,19 @@
             "siblings": [
               { "goal_text": "trace.counter run X227^2", "goal_id": 1722 },
               {
-                "goal_text":
-                  "if (not (X227^2 = 0)) (std.debug-print run= X227^2) true",
+                "goal_text": "if (not (X227^2 = 0)) (std.debug-print run= X227^2) true",
                 "goal_id": 1723
               },
               {
-                "goal_text":
-                  "std.debug-print ----<<---- enter:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n   X175^1)",
+                "goal_text": "std.debug-print ----<<---- enter:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n   X175^1)",
                 "goal_id": 1724
               },
               {
-                "goal_text":
-                  "std.take 0 \n [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n  app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] X175^1",
+                "goal_text": "std.take 0 \n [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n  app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] X175^1",
                 "goal_id": 1725
               },
               {
-                "goal_text":
-                  "std.debug-print ---->>---- exit:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n   X175^1)",
+                "goal_text": "std.debug-print ---->>---- exit:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n   X175^1)",
                 "goal_id": 1726
               }
             ],
@@ -252121,8 +244010,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -252141,13 +244029,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -252172,13 +244058,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -252212,8 +244096,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -252289,13 +244172,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -252310,8 +244191,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -252406,13 +244286,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -252504,13 +244382,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -252525,13 +244401,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -252546,13 +244420,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -252567,13 +244439,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -252645,13 +244515,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -252742,13 +244610,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -252782,13 +244648,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -252822,13 +244686,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -252843,13 +244705,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -253149,13 +245009,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -253174,8 +245032,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -253200,13 +245057,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -253221,8 +245076,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -253278,8 +245132,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -253298,13 +245151,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -253329,13 +245180,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -253369,8 +245218,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -253446,13 +245294,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -253467,8 +245313,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -253563,13 +245408,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -253661,13 +245504,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -253682,13 +245523,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -253703,13 +245542,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -253724,13 +245561,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -253802,13 +245637,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -253899,13 +245732,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -253939,13 +245770,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -253979,13 +245808,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -254000,13 +245827,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -254306,13 +246131,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -254331,8 +246154,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -254357,13 +246179,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -254378,8 +246198,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -254440,8 +246259,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -254460,13 +246278,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -254491,13 +246307,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -254531,8 +246345,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -254608,13 +246421,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -254629,8 +246440,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -254725,13 +246535,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -254823,13 +246631,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -254844,13 +246650,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -254865,13 +246669,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -254886,13 +246688,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -254964,13 +246764,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -255061,13 +246859,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -255101,13 +246897,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -255141,13 +246935,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -255162,13 +246954,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -255468,13 +247258,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -255493,8 +247281,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -255519,13 +247306,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -255540,8 +247325,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -255632,8 +247416,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -255652,13 +247435,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -255683,13 +247464,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -255723,8 +247502,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -255800,13 +247578,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -255821,8 +247597,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -255917,13 +247692,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -256015,13 +247788,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -256036,13 +247807,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -256057,13 +247826,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -256078,13 +247845,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -256156,13 +247921,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -256253,13 +248016,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -256293,13 +248054,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -256333,13 +248092,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -256354,13 +248111,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -256660,13 +248415,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -256685,8 +248438,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -256711,13 +248463,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -256732,8 +248482,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -256840,8 +248589,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -256860,13 +248608,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -256891,13 +248637,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -256931,8 +248675,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -257008,13 +248751,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -257029,8 +248770,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -257125,13 +248865,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -257223,13 +248961,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -257244,13 +248980,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -257265,13 +248999,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -257286,13 +249018,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -257364,13 +249094,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -257461,13 +249189,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -257501,13 +249227,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -257541,13 +249265,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -257562,13 +249284,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -257868,13 +249588,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -257893,8 +249611,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -257919,13 +249636,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -257940,8 +249655,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -258035,8 +249749,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -258055,13 +249768,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -258086,13 +249797,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -258126,8 +249835,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -258203,13 +249911,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -258224,8 +249930,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -258320,13 +250025,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -258418,13 +250121,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -258439,13 +250140,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -258460,13 +250159,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -258481,13 +250178,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -258559,13 +250254,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -258656,13 +250349,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -258696,13 +250387,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -258736,13 +250425,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -258757,13 +250444,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -259063,13 +250748,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -259088,8 +250771,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -259114,13 +250796,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -259135,8 +250815,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -259247,8 +250926,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -259267,13 +250945,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -259298,13 +250974,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -259338,8 +251012,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -259415,13 +251088,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -259436,8 +251107,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -259532,13 +251202,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -259630,13 +251298,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -259651,13 +251317,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -259672,13 +251336,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -259693,13 +251355,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -259771,13 +251431,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -259868,13 +251526,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -259908,13 +251564,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -259948,13 +251602,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -259969,13 +251621,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -260275,13 +251925,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -260300,8 +251948,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -260326,13 +251973,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -260347,8 +251992,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -260432,8 +252076,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -260452,13 +252095,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -260483,13 +252124,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -260523,8 +252162,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -260600,13 +252238,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -260621,8 +252257,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -260717,13 +252352,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -260815,13 +252448,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -260836,13 +252467,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -260857,13 +252486,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -260878,13 +252505,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -260956,13 +252581,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -261053,13 +252676,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -261093,13 +252714,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -261133,13 +252752,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -261154,13 +252771,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -261460,13 +253075,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -261485,8 +253098,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -261511,13 +253123,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -261532,8 +253142,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -261636,8 +253245,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -261656,13 +253264,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -261687,13 +253293,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -261727,8 +253331,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -261804,13 +253407,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -261825,8 +253426,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -261921,13 +253521,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -262019,13 +253617,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -262040,13 +253636,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -262061,13 +253655,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -262082,13 +253674,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -262160,13 +253750,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -262257,13 +253845,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -262297,13 +253883,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -262337,13 +253921,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -262358,13 +253940,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -262664,13 +254244,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -262689,8 +254267,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -262715,13 +254292,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -262736,8 +254311,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -262769,8 +254343,7 @@
       "Inference",
       {
         "current_goal_id": 1724,
-        "current_goal_text":
-          "std.debug-print ----<<---- enter:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n   X175^1)",
+        "current_goal_text": "std.debug-print ----<<---- enter:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n   X175^1)",
         "current_goal_predicate": "std.debug-print",
         "failed_attempts": [],
         "successful_attempts": [
@@ -262779,8 +254352,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
+                  "rule_text": "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -262803,8 +254375,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1735 },
               {
-                "goal_text":
-                  "coq.say ----<<---- enter:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n   X175^1)",
+                "goal_text": "coq.say ----<<---- enter:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n   X175^1)",
                 "goal_id": 1736
               }
             ],
@@ -262817,8 +254388,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
+                "rule_text": "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -262837,8 +254407,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -262857,13 +254426,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -262888,13 +254455,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -262928,8 +254493,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -263005,13 +254569,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -263026,8 +254588,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -263122,13 +254683,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -263220,13 +254779,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -263241,13 +254798,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -263262,13 +254817,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -263283,13 +254836,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -263361,13 +254912,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -263458,13 +255007,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -263498,13 +255045,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -263538,13 +255083,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -263559,13 +255102,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -263865,13 +255406,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -263890,8 +255429,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -263916,13 +255454,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -263937,8 +255473,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -263973,8 +255508,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "std.debug-print ----<<---- enter:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n   X175^1)",
+              "goal_text": "std.debug-print ----<<---- enter:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n   X175^1)",
               "goal_id": 1724
             },
             "cut_branch": {
@@ -264002,8 +255536,7 @@
       "Inference",
       {
         "current_goal_id": 1736,
-        "current_goal_text":
-          "coq.say ----<<---- enter:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n   X175^1)",
+        "current_goal_text": "coq.say ----<<---- enter:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n   X175^1)",
         "current_goal_predicate": "coq.say",
         "failed_attempts": [],
         "successful_attempts": [
@@ -264027,8 +255560,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
+                "rule_text": "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -264047,8 +255579,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -264067,13 +255598,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -264098,13 +255627,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -264138,8 +255665,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -264215,13 +255741,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -264236,8 +255760,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -264332,13 +255855,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -264430,13 +255951,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -264451,13 +255970,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -264472,13 +255989,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -264493,13 +256008,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -264571,13 +256084,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -264668,13 +256179,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -264708,13 +256217,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -264748,13 +256255,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -264769,13 +256274,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -265075,13 +256578,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -265100,8 +256601,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -265126,13 +256626,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -265147,8 +256645,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -265180,8 +256677,7 @@
       "Inference",
       {
         "current_goal_id": 1725,
-        "current_goal_text":
-          "std.take 0 \n [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n  app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] X175^1",
+        "current_goal_text": "std.take 0 \n [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n  app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] X175^1",
         "current_goal_predicate": "std.take",
         "failed_attempts": [],
         "successful_attempts": [
@@ -265233,8 +256729,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -265253,13 +256748,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -265284,13 +256777,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -265324,8 +256815,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -265401,13 +256891,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -265422,8 +256910,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -265518,13 +257005,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -265616,13 +257101,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -265637,13 +257120,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -265658,13 +257139,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -265679,13 +257158,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -265757,13 +257234,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -265854,13 +257329,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -265894,13 +257367,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -265934,13 +257405,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -265955,13 +257424,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -266261,13 +257728,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -266286,8 +257751,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -266312,13 +257776,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -266333,8 +257795,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -266369,13 +257830,11 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "std.take 0 \n [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n  app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] X175^1",
+              "goal_text": "std.take 0 \n [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n  app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] X175^1",
               "goal_id": 1725
             },
             "cut_branch": {
-              "rule_text":
-                "(std.take A0 [A1 | A2] [A1 | A3]) :- (!), (A4 is A0 - 1), \n (std.take A4 A2 A3).",
+              "rule_text": "(std.take A0 [A1 | A2] [A1 | A3]) :- (!), (A4 is A0 - 1), \n (std.take A4 A2 A3).",
               "rule_loc": [
                 "File",
                 {
@@ -266389,13 +257848,11 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "std.take 0 \n [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n  app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] X175^1",
+              "goal_text": "std.take 0 \n [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n  app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] X175^1",
               "goal_id": 1725
             },
             "cut_branch": {
-              "rule_text":
-                "(std.take _ _ _) :- (std.fatal-error take run out of list items).",
+              "rule_text": "(std.take _ _ _) :- (std.fatal-error take run out of list items).",
               "rule_loc": [
                 "File",
                 {
@@ -266419,8 +257876,7 @@
       "Inference",
       {
         "current_goal_id": 1726,
-        "current_goal_text":
-          "std.debug-print ---->>---- exit:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] [])",
+        "current_goal_text": "std.debug-print ---->>---- exit:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] [])",
         "current_goal_predicate": "std.debug-print",
         "failed_attempts": [],
         "successful_attempts": [
@@ -266429,8 +257885,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
+                  "rule_text": "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -266453,8 +257908,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1738 },
               {
-                "goal_text":
-                  "coq.say ---->>---- exit:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] [])",
+                "goal_text": "coq.say ---->>---- exit:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] [])",
                 "goal_id": 1739
               }
             ],
@@ -266467,8 +257921,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
+                "rule_text": "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -266487,8 +257940,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -266507,13 +257959,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -266538,13 +257988,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -266578,8 +258026,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -266655,13 +258102,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -266676,8 +258121,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -266772,13 +258216,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -266870,13 +258312,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -266891,13 +258331,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -266912,13 +258350,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -266933,13 +258369,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -267011,13 +258445,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -267108,13 +258540,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -267148,13 +258578,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -267188,13 +258616,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -267209,13 +258635,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -267515,13 +258939,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -267540,8 +258962,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -267566,13 +258987,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -267587,8 +259006,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -267623,8 +259041,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "std.debug-print ---->>---- exit:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n   X175^1)",
+              "goal_text": "std.debug-print ---->>---- exit:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] \n   X175^1)",
               "goal_id": 1726
             },
             "cut_branch": {
@@ -267652,8 +259069,7 @@
       "Inference",
       {
         "current_goal_id": 1739,
-        "current_goal_text":
-          "coq.say ---->>---- exit:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] [])",
+        "current_goal_text": "coq.say ---->>---- exit:  \n (std.take 0 \n   [c0, app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n    app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]] [])",
         "current_goal_predicate": "coq.say",
         "failed_attempts": [],
         "successful_attempts": [
@@ -267677,8 +259093,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
+                "rule_text": "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -267697,8 +259112,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -267717,13 +259131,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -267748,13 +259160,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -267788,8 +259198,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -267865,13 +259274,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -267886,8 +259293,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -267982,13 +259388,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -268080,13 +259484,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -268101,13 +259503,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -268122,13 +259522,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -268143,13 +259541,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -268221,13 +259617,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -268318,13 +259712,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -268358,13 +259750,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -268398,13 +259788,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -268419,13 +259807,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -268725,13 +260111,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -268750,8 +260134,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -268776,13 +260159,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -268797,8 +260178,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -268837,8 +260217,7 @@
               "goal_id": 1613
             },
             "cut_branch": {
-              "rule_text":
-                "(std.spy A0) :- (std.debug-print ---->>---- fail:  A0), fail.",
+              "rule_text": "(std.spy A0) :- (std.debug-print ---->>---- fail:  A0), fail.",
               "rule_loc": [
                 "File",
                 {
@@ -268856,8 +260235,7 @@
               "goal_id": 1611
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-nparams (indt «SelfA.axioms_») 0) :- .",
+              "rule_text": "(factory-nparams (indt «SelfA.axioms_») 0) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -268875,8 +260253,7 @@
               "goal_id": 1611
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-nparams (indt «IsSelfA'.axioms_») 0) :- .",
+              "rule_text": "(factory-nparams (indt «IsSelfA'.axioms_») 0) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -268890,8 +260267,7 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1 ;\n std.fatal-error-w-data\n  The conclusion of a builder is a mixin whose parameters depend on other mixins \n  (extract-conclusion-params c0 \n    (prod `fresh_name_19` \n      (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n      app\n       [global (indt «IsSelfA.axioms_»), c0, \n        app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n        app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n    X175^1)",
+              "goal_text": "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «IsSelfA.axioms_»), c0, \n     app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n     app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n X175^1 ;\n std.fatal-error-w-data\n  The conclusion of a builder is a mixin whose parameters depend on other mixins \n  (extract-conclusion-params c0 \n    (prod `fresh_name_19` \n      (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n      app\n       [global (indt «IsSelfA.axioms_»), c0, \n        app [global (const «Builders_18.HB_unnamed_factory_20»), c0, c1], \n        app [global (const «Builders_18.HB_unnamed_factory_22»), c0, c1]]) \n    X175^1)",
               "goal_id": 1602
             },
             "cut_branch": {
@@ -269034,13 +260410,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -269055,8 +260429,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -269151,13 +260524,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -269249,13 +260620,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -269270,13 +260639,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -269291,13 +260658,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -269312,13 +260677,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -269390,13 +260753,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -269487,13 +260848,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -269527,13 +260886,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -269567,13 +260924,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -269588,13 +260943,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -269894,13 +261247,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -269919,8 +261270,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -269945,13 +261295,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -269966,8 +261314,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -269999,8 +261346,7 @@
       "Inference",
       {
         "current_goal_id": 1578,
-        "current_goal_text":
-          "std.map2\n [global (const «Builders_18.HB_unnamed_factory_22»), \n  global (const «Builders_18.HB_unnamed_factory_20»)] \n [indt «HasB.axioms_», indt «HasA.axioms_»] (factory-provides.one [] c0) \n X174^1",
+        "current_goal_text": "std.map2\n [global (const «Builders_18.HB_unnamed_factory_22»), \n  global (const «Builders_18.HB_unnamed_factory_20»)] \n [indt «HasB.axioms_», indt «HasA.axioms_»] (factory-provides.one [] c0) \n X174^1",
         "current_goal_predicate": "std.map2",
         "failed_attempts": [],
         "successful_attempts": [
@@ -270009,8 +261355,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                  "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                   "rule_loc": [
                     "File",
                     {
@@ -270039,13 +261384,11 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "factory-provides.one [] c0 \n (global (const «Builders_18.HB_unnamed_factory_22»)) \n (indt «HasB.axioms_») X228^1",
+                "goal_text": "factory-provides.one [] c0 \n (global (const «Builders_18.HB_unnamed_factory_22»)) \n (indt «HasB.axioms_») X228^1",
                 "goal_id": 1740
               },
               {
-                "goal_text":
-                  "std.map2 [global (const «Builders_18.HB_unnamed_factory_20»)] \n [indt «HasA.axioms_»] (factory-provides.one [] c0) X229^1",
+                "goal_text": "std.map2 [global (const «Builders_18.HB_unnamed_factory_20»)] \n [indt «HasA.axioms_»] (factory-provides.one [] c0) X229^1",
                 "goal_id": 1741
               }
             ],
@@ -270058,8 +261401,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -270078,8 +261420,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -270174,13 +261515,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -270272,13 +261611,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -270293,13 +261630,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -270314,13 +261649,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -270335,13 +261668,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -270413,13 +261744,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -270510,13 +261839,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -270550,13 +261877,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -270590,13 +261915,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -270611,13 +261934,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -270917,13 +262238,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -270942,8 +262261,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -270968,13 +262286,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -270989,8 +262305,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -271022,8 +262337,7 @@
       "Inference",
       {
         "current_goal_id": 1740,
-        "current_goal_text":
-          "factory-provides.one [] c0 \n (global (const «Builders_18.HB_unnamed_factory_22»)) \n (indt «HasB.axioms_») X228^1",
+        "current_goal_text": "factory-provides.one [] c0 \n (global (const «Builders_18.HB_unnamed_factory_22»)) \n (indt «HasB.axioms_») X228^1",
         "current_goal_predicate": "factory-provides.one",
         "failed_attempts": [],
         "successful_attempts": [
@@ -271032,13 +262346,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                  "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 108,
                       "column": 0,
                       "character": 3601
@@ -271062,8 +262374,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.do!\n [std.assert-ok!\n   (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_22»)) \n     X231^1) Builder illtyped, \n  (coq.subst-prod [] X231^1 X232^1 , coq.subst-prod [c0] X232^1 X233^1), \n  std.assert! (extract-conclusion-params c0 X233^1 X230^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
+                "goal_text": "std.do!\n [std.assert-ok!\n   (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_22»)) \n     X231^1) Builder illtyped, \n  (coq.subst-prod [] X231^1 X232^1 , coq.subst-prod [c0] X232^1 X233^1), \n  std.assert! (extract-conclusion-params c0 X233^1 X230^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
                 "goal_id": 1742
               }
             ],
@@ -271076,13 +262387,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -271097,8 +262406,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -271117,8 +262425,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -271213,13 +262520,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -271311,13 +262616,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -271332,13 +262635,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -271353,13 +262654,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -271374,13 +262673,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -271452,13 +262749,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -271549,13 +262844,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -271589,13 +262882,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -271629,13 +262920,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -271650,13 +262939,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -271956,13 +263243,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -271981,8 +263266,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -272007,13 +263291,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -272028,8 +263310,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -272061,8 +263342,7 @@
       "Inference",
       {
         "current_goal_id": 1742,
-        "current_goal_text":
-          "std.do!\n [std.assert-ok!\n   (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_22»)) \n     X231^1) Builder illtyped, \n  (coq.subst-prod [] X231^1 X232^1 , coq.subst-prod [c0] X232^1 X233^1), \n  std.assert! (extract-conclusion-params c0 X233^1 X230^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
+        "current_goal_text": "std.do!\n [std.assert-ok!\n   (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_22»)) \n     X231^1) Builder illtyped, \n  (coq.subst-prod [] X231^1 X232^1 , coq.subst-prod [c0] X232^1 X233^1), \n  std.assert! (extract-conclusion-params c0 X233^1 X230^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -272071,8 +263351,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -272097,14 +263376,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.assert-ok!\n (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_22»)) X231^1) \n Builder illtyped",
+                "goal_text": "std.assert-ok!\n (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_22»)) X231^1) \n Builder illtyped",
                 "goal_id": 1743
               },
               { "goal_text": "!", "goal_id": 1744 },
               {
-                "goal_text":
-                  "std.do!\n [(coq.subst-prod [] X231^1 X232^1 , coq.subst-prod [c0] X232^1 X233^1), \n  std.assert! (extract-conclusion-params c0 X233^1 X230^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
+                "goal_text": "std.do!\n [(coq.subst-prod [] X231^1 X232^1 , coq.subst-prod [c0] X232^1 X233^1), \n  std.assert! (extract-conclusion-params c0 X233^1 X230^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
                 "goal_id": 1745
               }
             ],
@@ -272136,13 +263413,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -272157,8 +263432,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -272177,8 +263451,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -272273,13 +263546,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -272371,13 +263642,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -272392,13 +263661,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -272413,13 +263680,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -272434,13 +263699,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -272512,13 +263775,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -272609,13 +263870,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -272649,13 +263908,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -272689,13 +263946,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -272710,13 +263965,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -273016,13 +264269,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -273041,8 +264292,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -273067,13 +264317,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -273088,8 +264336,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -273121,8 +264368,7 @@
       "Inference",
       {
         "current_goal_id": 1743,
-        "current_goal_text":
-          "std.assert-ok!\n (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_22»)) X231^1) \n Builder illtyped",
+        "current_goal_text": "std.assert-ok!\n (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_22»)) X231^1) \n Builder illtyped",
         "current_goal_predicate": "std.assert-ok!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -273131,8 +264377,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                  "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -273154,14 +264399,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.typecheck (global (const «Builders_18.HB_unnamed_factory_22»)) X231^1 \n X234^1",
+                "goal_text": "coq.typecheck (global (const «Builders_18.HB_unnamed_factory_22»)) X231^1 \n X234^1",
                 "goal_id": 1746
               },
               { "goal_text": "!", "goal_id": 1747 },
               {
-                "goal_text":
-                  "X234^1 = ok ;\n X234^1 = error X235^1 , std.fatal-error-w-data Builder illtyped X235^1",
+                "goal_text": "X234^1 = ok ;\n X234^1 = error X235^1 , std.fatal-error-w-data Builder illtyped X235^1",
                 "goal_id": 1748
               },
               { "goal_text": "!", "goal_id": 1749 }
@@ -273175,8 +264418,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -273214,13 +264456,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -273235,8 +264475,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -273255,8 +264494,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -273351,13 +264589,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -273449,13 +264685,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -273470,13 +264704,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -273491,13 +264723,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -273512,13 +264742,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -273590,13 +264818,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -273687,13 +264913,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -273727,13 +264951,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -273767,13 +264989,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -273788,13 +265008,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -274094,13 +265312,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -274119,8 +265335,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -274145,13 +265360,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -274166,8 +265379,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -274199,8 +265411,7 @@
       "Inference",
       {
         "current_goal_id": 1746,
-        "current_goal_text":
-          "coq.typecheck (global (const «Builders_18.HB_unnamed_factory_22»)) X231^1 \n X234^1",
+        "current_goal_text": "coq.typecheck (global (const «Builders_18.HB_unnamed_factory_22»)) X231^1 \n X234^1",
         "current_goal_predicate": "coq.typecheck",
         "failed_attempts": [],
         "successful_attempts": [
@@ -274211,8 +265422,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "X231^1 =\n prod `T` (sort (typ «interleave_context.396»)) c1 \\\n  prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n   c2 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c1, c2], c1]",
+                "goal_text": "X231^1 =\n prod `T` (sort (typ «interleave_context.396»)) c1 \\\n  prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n   c2 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c1, c2], c1]",
                 "goal_id": 1750
               },
               { "goal_text": "X234^1 = ok", "goal_id": 1751 }
@@ -274231,8 +265441,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -274270,13 +265479,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -274291,8 +265498,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -274311,8 +265517,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -274407,13 +265612,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -274505,13 +265708,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -274526,13 +265727,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -274547,13 +265746,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -274568,13 +265765,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -274646,13 +265841,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -274743,13 +265936,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -274783,13 +265974,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -274823,13 +266012,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -274844,13 +266031,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -275150,13 +266335,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -275175,8 +266358,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -275201,13 +266383,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -275222,8 +266402,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -275255,8 +266434,7 @@
       "Inference",
       {
         "current_goal_id": 1750,
-        "current_goal_text":
-          "X231^1 =\n prod `T` (sort (typ «interleave_context.396»)) c1 \\\n  prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n   c2 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c1, c2], c1]",
+        "current_goal_text": "X231^1 =\n prod `T` (sort (typ «interleave_context.396»)) c1 \\\n  prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n   c2 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c1, c2], c1]",
         "current_goal_predicate": "=",
         "failed_attempts": [],
         "successful_attempts": [
@@ -275290,8 +266468,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -275329,13 +266506,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -275350,8 +266525,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -275370,8 +266544,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -275466,13 +266639,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -275564,13 +266735,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -275585,13 +266754,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -275606,13 +266773,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -275627,13 +266792,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -275705,13 +266868,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -275802,13 +266963,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -275842,13 +267001,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -275882,13 +267039,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -275903,13 +267058,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -276209,13 +267362,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -276234,8 +267385,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -276260,13 +267410,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -276281,8 +267429,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -276343,8 +267490,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -276382,13 +267528,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -276403,8 +267547,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -276423,8 +267566,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -276519,13 +267661,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -276617,13 +267757,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -276638,13 +267776,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -276659,13 +267795,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -276680,13 +267814,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -276758,13 +267890,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -276855,13 +267985,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -276895,13 +268023,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -276935,13 +268061,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -276956,13 +268080,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -277262,13 +268384,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -277287,8 +268407,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -277313,13 +268432,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -277334,8 +268451,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -277370,13 +268486,11 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "std.assert-ok!\n (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_22»)) X231^1) \n Builder illtyped",
+              "goal_text": "std.assert-ok!\n (coq.typecheck (global (const «Builders_18.HB_unnamed_factory_22»)) X231^1) \n Builder illtyped",
               "goal_id": 1743
             },
             "cut_branch": {
-              "rule_text":
-                "(std.assert-ok! _ A0) :- (std.fatal-error-w-data A0 no diagnostic returned).",
+              "rule_text": "(std.assert-ok! _ A0) :- (std.fatal-error-w-data A0 no diagnostic returned).",
               "rule_loc": [
                 "File",
                 {
@@ -277400,8 +268514,7 @@
       "Inference",
       {
         "current_goal_id": 1748,
-        "current_goal_text":
-          "ok = ok ; ok = error X235^1 , std.fatal-error-w-data Builder illtyped X235^1",
+        "current_goal_text": "ok = ok ; ok = error X235^1 , std.fatal-error-w-data Builder illtyped X235^1",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -277453,8 +268566,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -277492,13 +268604,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -277513,8 +268623,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -277533,8 +268642,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -277629,13 +268737,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -277727,13 +268833,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -277748,13 +268852,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -277769,13 +268871,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -277790,13 +268890,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -277868,13 +268966,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -277965,13 +269061,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -278005,13 +269099,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -278045,13 +269137,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -278066,13 +269156,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -278372,13 +269460,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -278397,8 +269483,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -278423,13 +269508,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -278444,8 +269527,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -278520,8 +269602,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
+                "rule_text": "(std.assert-ok! A0 A1) :- (A0 A2), (!), \n (A2 = ok ; A2 = error A3 , std.fatal-error-w-data A1 A3), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -278559,13 +269640,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -278580,8 +269659,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -278600,8 +269678,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -278696,13 +269773,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -278794,13 +269869,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -278815,13 +269888,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -278836,13 +269907,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -278857,13 +269926,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -278935,13 +270002,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -279032,13 +270097,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -279072,13 +270135,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -279112,13 +270173,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -279133,13 +270192,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -279439,13 +270496,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -279464,8 +270519,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -279490,13 +270544,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -279511,8 +270563,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -279547,8 +270598,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "X234^1 = ok ;\n X234^1 = error X235^1 , std.fatal-error-w-data Builder illtyped X235^1",
+              "goal_text": "X234^1 = ok ;\n X234^1 = error X235^1 , std.fatal-error-w-data Builder illtyped X235^1",
               "goal_id": 1748
             },
             "cut_branch": {
@@ -279582,8 +270632,7 @@
       "Inference",
       {
         "current_goal_id": 1745,
-        "current_goal_text":
-          "std.do!\n [(coq.subst-prod [] \n    (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n      prod `fresh_name_19` \n       (app [global (const «IsSelfA'.phant_axioms»), c1]) c2 \\\n       app\n        [global (indt «HasB.axioms_»), \n         app\n          [global\n            (const\n              «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n           c1, c2], c1]) X232^1 , coq.subst-prod [c0] X232^1 X233^1), \n  std.assert! (extract-conclusion-params c0 X233^1 X230^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
+        "current_goal_text": "std.do!\n [(coq.subst-prod [] \n    (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n      prod `fresh_name_19` \n       (app [global (const «IsSelfA'.phant_axioms»), c1]) c2 \\\n       app\n        [global (indt «HasB.axioms_»), \n         app\n          [global\n            (const\n              «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n           c1, c2], c1]) X232^1 , coq.subst-prod [c0] X232^1 X233^1), \n  std.assert! (extract-conclusion-params c0 X233^1 X230^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -279592,8 +270641,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -279618,14 +270666,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «HasB.axioms_»), \n      app\n       [global\n         (const\n           «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n        c1, c2], c1]) X232^1 , coq.subst-prod [c0] X232^1 X233^1",
+                "goal_text": "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «HasB.axioms_»), \n      app\n       [global\n         (const\n           «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n        c1, c2], c1]) X232^1 , coq.subst-prod [c0] X232^1 X233^1",
                 "goal_id": 1753
               },
               { "goal_text": "!", "goal_id": 1754 },
               {
-                "goal_text":
-                  "std.do!\n [std.assert! (extract-conclusion-params c0 X233^1 X230^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
+                "goal_text": "std.do!\n [std.assert! (extract-conclusion-params c0 X233^1 X230^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
                 "goal_id": 1755
               }
             ],
@@ -279676,13 +270722,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -279697,8 +270741,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -279717,8 +270760,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -279813,13 +270855,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -279911,13 +270951,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -279932,13 +270970,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -279953,13 +270989,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -279974,13 +271008,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -280052,13 +271084,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -280149,13 +271179,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -280189,13 +271217,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -280229,13 +271255,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -280250,13 +271274,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -280556,13 +271578,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -280581,8 +271601,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -280607,13 +271626,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -280628,8 +271645,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -280661,8 +271677,7 @@
       "Inference",
       {
         "current_goal_id": 1753,
-        "current_goal_text":
-          "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «HasB.axioms_»), \n      app\n       [global\n         (const\n           «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n        c1, c2], c1]) X232^1 , coq.subst-prod [c0] X232^1 X233^1",
+        "current_goal_text": "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «HasB.axioms_»), \n      app\n       [global\n         (const\n           «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n        c1, c2], c1]) X232^1 , coq.subst-prod [c0] X232^1 X233^1",
         "current_goal_predicate": ",",
         "failed_attempts": [],
         "successful_attempts": [
@@ -280673,8 +271688,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «HasB.axioms_»), \n      app\n       [global\n         (const\n           «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n        c1, c2], c1]) X232^1",
+                "goal_text": "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «HasB.axioms_»), \n      app\n       [global\n         (const\n           «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n        c1, c2], c1]) X232^1",
                 "goal_id": 1756
               },
               {
@@ -280734,13 +271748,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -280755,8 +271767,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -280775,8 +271786,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -280871,13 +271881,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -280969,13 +271977,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -280990,13 +271996,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -281011,13 +272015,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -281032,13 +272034,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -281110,13 +272110,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -281207,13 +272205,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -281247,13 +272243,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -281287,13 +272281,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -281308,13 +272300,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -281614,13 +272604,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -281639,8 +272627,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -281665,13 +272652,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -281686,8 +272671,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -281719,8 +272703,7 @@
       "Inference",
       {
         "current_goal_id": 1756,
-        "current_goal_text":
-          "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «HasB.axioms_»), \n      app\n       [global\n         (const\n           «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n        c1, c2], c1]) X232^1",
+        "current_goal_text": "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «HasB.axioms_»), \n      app\n       [global\n         (const\n           «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n        c1, c2], c1]) X232^1",
         "current_goal_predicate": "coq.subst-prod",
         "failed_attempts": [],
         "successful_attempts": [
@@ -281824,13 +272807,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -281845,8 +272826,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -281865,8 +272845,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -281961,13 +272940,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -282059,13 +273036,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -282080,13 +273055,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -282101,13 +273074,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -282122,13 +273093,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -282200,13 +273169,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -282297,13 +273264,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -282337,13 +273302,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -282377,13 +273340,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -282398,13 +273359,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -282704,13 +273663,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -282729,8 +273686,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -282755,13 +273711,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -282776,8 +273730,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -282812,13 +273765,11 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «HasB.axioms_»), \n      app\n       [global\n         (const\n           «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n        c1, c2], c1]) X232^1",
+              "goal_text": "coq.subst-prod [] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «HasB.axioms_»), \n      app\n       [global\n         (const\n           «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n        c1, c2], c1]) X232^1",
               "goal_id": 1756
             },
             "cut_branch": {
-              "rule_text":
-                "(coq.subst-prod A0 (let _ _ A1 A2) A3) :- (!), \n (coq.subst-prod A0 (A2 A1) A3).",
+              "rule_text": "(coq.subst-prod A0 (let _ _ A1 A2) A3) :- (!), \n (coq.subst-prod A0 (A2 A1) A3).",
               "rule_loc": [
                 "File",
                 {
@@ -282842,8 +273793,7 @@
       "Inference",
       {
         "current_goal_id": 1757,
-        "current_goal_text":
-          "coq.subst-prod [c0] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «HasB.axioms_»), \n      app\n       [global\n         (const\n           «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n        c1, c2], c1]) X233^1",
+        "current_goal_text": "coq.subst-prod [c0] \n (prod `T` (sort (typ «interleave_context.396»)) c1 \\\n   prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c1]) \n    c2 \\\n    app\n     [global (indt «HasB.axioms_»), \n      app\n       [global\n         (const\n           «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n        c1, c2], c1]) X233^1",
         "current_goal_predicate": "coq.subst-prod",
         "failed_attempts": [],
         "successful_attempts": [
@@ -282852,8 +273802,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(coq.subst-prod [A0 | A1] (prod _ _ A2) A3) :- (!), \n (coq.subst-prod A1 (A2 A0) A3).",
+                  "rule_text": "(coq.subst-prod [A0 | A1] (prod _ _ A2) A3) :- (!), \n (coq.subst-prod A1 (A2 A0) A3).",
                   "rule_loc": [
                     "File",
                     {
@@ -282878,8 +273827,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1759 },
               {
-                "goal_text":
-                  "coq.subst-prod [] \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X233^1",
+                "goal_text": "coq.subst-prod [] \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X233^1",
                 "goal_id": 1760
               }
             ],
@@ -282892,8 +273840,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.subst-prod [A0 | A1] (prod _ _ A2) A3) :- (!), \n (coq.subst-prod A1 (A2 A0) A3).",
+                "rule_text": "(coq.subst-prod [A0 | A1] (prod _ _ A2) A3) :- (!), \n (coq.subst-prod A1 (A2 A0) A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -282955,13 +273902,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -282976,8 +273921,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -282996,8 +273940,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -283092,13 +274035,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -283190,13 +274131,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -283211,13 +274150,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -283232,13 +274169,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -283253,13 +274188,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -283331,13 +274264,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -283428,13 +274359,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -283468,13 +274397,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -283508,13 +274435,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -283529,13 +274454,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -283835,13 +274758,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -283860,8 +274781,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -283886,13 +274806,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -283907,8 +274825,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -283947,8 +274864,7 @@
               "goal_id": 1757
             },
             "cut_branch": {
-              "rule_text":
-                "(coq.subst-prod A0 (let _ _ A1 A2) A3) :- (!), \n (coq.subst-prod A0 (A2 A1) A3).",
+              "rule_text": "(coq.subst-prod A0 (let _ _ A1 A2) A3) :- (!), \n (coq.subst-prod A0 (A2 A1) A3).",
               "rule_loc": [
                 "File",
                 {
@@ -283966,8 +274882,7 @@
               "goal_id": 1757
             },
             "cut_branch": {
-              "rule_text":
-                "(coq.subst-prod [_ | _] A0 _) :- (!), \n (std.fatal-error-w-data subst-prod: not a product A0).",
+              "rule_text": "(coq.subst-prod [_ | _] A0 _) :- (!), \n (std.fatal-error-w-data subst-prod: not a product A0).",
               "rule_loc": [
                 "File",
                 {
@@ -283991,8 +274906,7 @@
       "Inference",
       {
         "current_goal_id": 1760,
-        "current_goal_text":
-          "coq.subst-prod [] \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X233^1",
+        "current_goal_text": "coq.subst-prod [] \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X233^1",
         "current_goal_predicate": "coq.subst-prod",
         "failed_attempts": [],
         "successful_attempts": [
@@ -284053,8 +274967,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(coq.subst-prod [A0 | A1] (prod _ _ A2) A3) :- (!), \n (coq.subst-prod A1 (A2 A0) A3).",
+                "rule_text": "(coq.subst-prod [A0 | A1] (prod _ _ A2) A3) :- (!), \n (coq.subst-prod A1 (A2 A0) A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -284116,13 +275029,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -284137,8 +275048,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -284157,8 +275067,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -284253,13 +275162,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -284351,13 +275258,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -284372,13 +275277,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -284393,13 +275296,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -284414,13 +275315,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -284492,13 +275391,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -284589,13 +275486,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -284629,13 +275524,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -284669,13 +275562,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -284690,13 +275581,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -284996,13 +275885,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -285021,8 +275908,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -285047,13 +275933,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -285068,8 +275952,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -285104,13 +275987,11 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "coq.subst-prod [] \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X233^1",
+              "goal_text": "coq.subst-prod [] \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X233^1",
               "goal_id": 1760
             },
             "cut_branch": {
-              "rule_text":
-                "(coq.subst-prod A0 (let _ _ A1 A2) A3) :- (!), \n (coq.subst-prod A0 (A2 A1) A3).",
+              "rule_text": "(coq.subst-prod A0 (let _ _ A1 A2) A3) :- (!), \n (coq.subst-prod A0 (A2 A1) A3).",
               "rule_loc": [
                 "File",
                 {
@@ -285140,8 +276021,7 @@
       "Inference",
       {
         "current_goal_id": 1755,
-        "current_goal_text":
-          "std.do!\n [std.assert!\n   (extract-conclusion-params c0 \n     (prod `fresh_name_19` \n       (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n       app\n        [global (indt «HasB.axioms_»), \n         app\n          [global\n            (const\n              «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n           c0, c1], c0]) X230^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
+        "current_goal_text": "std.do!\n [std.assert!\n   (extract-conclusion-params c0 \n     (prod `fresh_name_19` \n       (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n       app\n        [global (indt «HasB.axioms_»), \n         app\n          [global\n            (const\n              «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n           c0, c1], c0]) X230^1) \n   The conclusion of a builder is a mixin whose parameters depend on other mixins]",
         "current_goal_predicate": "std.do!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -285150,8 +276030,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
+                  "rule_text": "(std.do! [A0 | A1]) :- A0, (!), (std.do! A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -285173,8 +276052,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "std.assert!\n (extract-conclusion-params c0 \n   (prod `fresh_name_19` \n     (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n     app\n      [global (indt «HasB.axioms_»), \n       app\n        [global\n          (const\n            «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n         c0, c1], c0]) X230^1) \n The conclusion of a builder is a mixin whose parameters depend on other mixins",
+                "goal_text": "std.assert!\n (extract-conclusion-params c0 \n   (prod `fresh_name_19` \n     (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n     app\n      [global (indt «HasB.axioms_»), \n       app\n        [global\n          (const\n            «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n         c0, c1], c0]) X230^1) \n The conclusion of a builder is a mixin whose parameters depend on other mixins",
                 "goal_id": 1762
               },
               { "goal_text": "!", "goal_id": 1763 },
@@ -285246,13 +276124,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -285267,8 +276143,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -285287,8 +276162,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -285383,13 +276257,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -285481,13 +276353,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -285502,13 +276372,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -285523,13 +276391,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -285544,13 +276410,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -285622,13 +276486,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -285719,13 +276581,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -285759,13 +276619,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -285799,13 +276657,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -285820,13 +276676,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -286126,13 +276980,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -286151,8 +277003,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -286177,13 +277028,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -286198,8 +277047,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -286231,8 +277079,7 @@
       "Inference",
       {
         "current_goal_id": 1762,
-        "current_goal_text":
-          "std.assert!\n (extract-conclusion-params c0 \n   (prod `fresh_name_19` \n     (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n     app\n      [global (indt «HasB.axioms_»), \n       app\n        [global\n          (const\n            «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n         c0, c1], c0]) X230^1) \n The conclusion of a builder is a mixin whose parameters depend on other mixins",
+        "current_goal_text": "std.assert!\n (extract-conclusion-params c0 \n   (prod `fresh_name_19` \n     (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n     app\n      [global (indt «HasB.axioms_»), \n       app\n        [global\n          (const\n            «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n         c0, c1], c0]) X230^1) \n The conclusion of a builder is a mixin whose parameters depend on other mixins",
         "current_goal_predicate": "std.assert!",
         "failed_attempts": [],
         "successful_attempts": [
@@ -286241,8 +277088,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                  "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -286267,8 +277113,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X230^1 ;\n std.fatal-error-w-data\n  The conclusion of a builder is a mixin whose parameters depend on other mixins \n  (extract-conclusion-params c0 \n    (prod `fresh_name_19` \n      (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n      app\n       [global (indt «HasB.axioms_»), \n        app\n         [global\n           (const\n             «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n          c0, c1], c0]) X230^1)",
+                "goal_text": "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X230^1 ;\n std.fatal-error-w-data\n  The conclusion of a builder is a mixin whose parameters depend on other mixins \n  (extract-conclusion-params c0 \n    (prod `fresh_name_19` \n      (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n      app\n       [global (indt «HasB.axioms_»), \n        app\n         [global\n           (const\n             «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n          c0, c1], c0]) X230^1)",
                 "goal_id": 1765
               },
               { "goal_text": "!", "goal_id": 1766 }
@@ -286282,8 +277127,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -286359,13 +277203,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -286380,8 +277222,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -286400,8 +277241,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -286496,13 +277336,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -286594,13 +277432,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -286615,13 +277451,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -286636,13 +277470,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -286657,13 +277489,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -286735,13 +277565,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -286832,13 +277660,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -286872,13 +277698,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -286912,13 +277736,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -286933,13 +277755,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -287239,13 +278059,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -287264,8 +278082,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -287290,13 +278107,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -287311,8 +278126,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -287344,8 +278158,7 @@
       "Inference",
       {
         "current_goal_id": 1765,
-        "current_goal_text":
-          "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X230^1 ;\n std.fatal-error-w-data\n  The conclusion of a builder is a mixin whose parameters depend on other mixins \n  (extract-conclusion-params c0 \n    (prod `fresh_name_19` \n      (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n      app\n       [global (indt «HasB.axioms_»), \n        app\n         [global\n           (const\n             «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n          c0, c1], c0]) X230^1)",
+        "current_goal_text": "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X230^1 ;\n std.fatal-error-w-data\n  The conclusion of a builder is a mixin whose parameters depend on other mixins \n  (extract-conclusion-params c0 \n    (prod `fresh_name_19` \n      (app [global (const «IsSelfA'.phant_axioms»), c0]) c1 \\\n      app\n       [global (indt «HasB.axioms_»), \n        app\n         [global\n           (const\n             «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n          c0, c1], c0]) X230^1)",
         "current_goal_predicate": ";",
         "failed_attempts": [],
         "successful_attempts": [
@@ -287375,8 +278188,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X230^1",
+                "goal_text": "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X230^1",
                 "goal_id": 1767
               }
             ],
@@ -287408,8 +278220,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -287485,13 +278296,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -287506,8 +278315,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -287526,8 +278334,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -287622,13 +278429,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -287720,13 +278525,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -287741,13 +278544,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -287762,13 +278563,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -287783,13 +278582,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -287861,13 +278658,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -287958,13 +278753,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -287998,13 +278791,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -288038,13 +278829,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -288059,13 +278848,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -288365,13 +279152,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -288390,8 +279175,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -288416,13 +279200,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -288437,8 +279219,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -288470,8 +279251,7 @@
       "Inference",
       {
         "current_goal_id": 1767,
-        "current_goal_text":
-          "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X230^1",
+        "current_goal_text": "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X230^1",
         "current_goal_predicate": "extract-conclusion-params",
         "failed_attempts": [],
         "successful_attempts": [
@@ -288480,13 +279260,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                  "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 115,
                       "column": 0,
                       "character": 3974
@@ -288510,8 +279288,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1768 },
               {
-                "goal_text":
-                  "pi c1 \\\n decl c1 _ (app [global (const «IsSelfA'.phant_axioms»), c0]) =>\n  extract-conclusion-params c0 \n   (app\n     [global (indt «HasB.axioms_»), \n      app\n       [global\n         (const\n           «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n        c0, c1], c0]) X230^1",
+                "goal_text": "pi c1 \\\n decl c1 _ (app [global (const «IsSelfA'.phant_axioms»), c0]) =>\n  extract-conclusion-params c0 \n   (app\n     [global (indt «HasB.axioms_»), \n      app\n       [global\n         (const\n           «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n        c0, c1], c0]) X230^1",
                 "goal_id": 1769
               }
             ],
@@ -288524,13 +279301,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -288564,8 +279339,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -288641,13 +279415,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -288662,8 +279434,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -288682,8 +279453,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -288778,13 +279548,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -288876,13 +279644,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -288897,13 +279663,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -288918,13 +279682,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -288939,13 +279701,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -289017,13 +279777,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -289114,13 +279872,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -289154,13 +279910,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -289194,13 +279948,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -289215,13 +279967,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -289521,13 +280271,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -289546,8 +280294,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -289572,13 +280319,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -289593,8 +280338,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -289629,18 +280373,15 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X230^1",
+              "goal_text": "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X230^1",
               "goal_id": 1767
             },
             "cut_branch": {
-              "rule_text":
-                "(extract-conclusion-params A0 (app [global A1 | A2]) A3) :- (!), \n (factory-alias->gref A1 A4), (factory-nparams A4 A5), \n (std.map A2 (copy-pack-holes A0) A6), (std.spy (std.take A5 A6 A3)).",
+              "rule_text": "(extract-conclusion-params A0 (app [global A1 | A2]) A3) :- (!), \n (factory-alias->gref A1 A4), (factory-nparams A4 A5), \n (std.map A2 (copy-pack-holes A0) A6), (std.spy (std.take A5 A6 A3)).",
               "rule_loc": [
                 "File",
                 {
-                  "filename":
-                    "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                  "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                   "line": 117,
                   "column": 0,
                   "character": 4090
@@ -289650,18 +280391,15 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X230^1",
+              "goal_text": "extract-conclusion-params c0 \n (prod `fresh_name_19` (app [global (const «IsSelfA'.phant_axioms»), c0]) \n   c1 \\\n   app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X230^1",
               "goal_id": 1767
             },
             "cut_branch": {
-              "rule_text":
-                "(extract-conclusion-params A0 A1 A2) :- (whd1 A1 A3), (!), \n (extract-conclusion-params A0 A3 A2).",
+              "rule_text": "(extract-conclusion-params A0 A1 A2) :- (whd1 A1 A3), (!), \n (extract-conclusion-params A0 A3 A2).",
               "rule_loc": [
                 "File",
                 {
-                  "filename":
-                    "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                  "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                   "line": 122,
                   "column": 0,
                   "character": 4303
@@ -289681,8 +280419,7 @@
       "Inference",
       {
         "current_goal_id": 1769,
-        "current_goal_text":
-          "pi c1 \\\n decl c1 _ (app [global (const «IsSelfA'.phant_axioms»), c0]) =>\n  extract-conclusion-params c0 \n   (app\n     [global (indt «HasB.axioms_»), \n      app\n       [global\n         (const\n           «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n        c0, c1], c0]) X230^1",
+        "current_goal_text": "pi c1 \\\n decl c1 _ (app [global (const «IsSelfA'.phant_axioms»), c0]) =>\n  extract-conclusion-params c0 \n   (app\n     [global (indt «HasB.axioms_»), \n      app\n       [global\n         (const\n           «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n        c0, c1], c0]) X230^1",
         "current_goal_predicate": "pi",
         "failed_attempts": [],
         "successful_attempts": [
@@ -289693,8 +280430,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "decl c1 _ (app [global (const «IsSelfA'.phant_axioms»), c0]) =>\n extract-conclusion-params c0 \n  (app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X230^1",
+                "goal_text": "decl c1 _ (app [global (const «IsSelfA'.phant_axioms»), c0]) =>\n extract-conclusion-params c0 \n  (app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X230^1",
                 "goal_id": 1770
               }
             ],
@@ -289712,13 +280448,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -289752,8 +280486,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -289829,13 +280562,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -289850,8 +280581,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -289870,8 +280600,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -289966,13 +280695,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -290064,13 +280791,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -290085,13 +280810,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -290106,13 +280829,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -290127,13 +280848,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -290205,13 +280924,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -290302,13 +281019,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -290342,13 +281057,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -290382,13 +281095,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -290403,13 +281114,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -290709,13 +281418,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -290734,8 +281441,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -290760,13 +281466,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -290781,8 +281485,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -290814,8 +281517,7 @@
       "Inference",
       {
         "current_goal_id": 1770,
-        "current_goal_text":
-          "decl c1 _ (app [global (const «IsSelfA'.phant_axioms»), c0]) =>\n extract-conclusion-params c0 \n  (app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X230^1",
+        "current_goal_text": "decl c1 _ (app [global (const «IsSelfA'.phant_axioms»), c0]) =>\n extract-conclusion-params c0 \n  (app\n    [global (indt «HasB.axioms_»), \n     app\n      [global\n        (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n       c0, c1], c0]) X230^1",
         "current_goal_predicate": "=>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -290826,8 +281528,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "extract-conclusion-params c0 \n (app\n   [global (indt «HasB.axioms_»), \n    app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0]) X230^1",
+                "goal_text": "extract-conclusion-params c0 \n (app\n   [global (indt «HasB.axioms_»), \n    app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0]) X230^1",
                 "goal_id": 1771
               }
             ],
@@ -290850,13 +281551,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -290890,8 +281589,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -290967,13 +281665,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -290988,8 +281684,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -291008,8 +281703,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -291104,13 +281798,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -291202,13 +281894,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -291223,13 +281913,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -291244,13 +281932,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -291265,13 +281951,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -291343,13 +282027,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -291440,13 +282122,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -291480,13 +282160,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -291520,13 +282198,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -291541,13 +282217,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -291847,13 +282521,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -291872,8 +282544,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -291898,13 +282569,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -291919,8 +282588,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -291952,21 +282620,18 @@
       "Inference",
       {
         "current_goal_id": 1771,
-        "current_goal_text":
-          "extract-conclusion-params c0 \n (app\n   [global (indt «HasB.axioms_»), \n    app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0]) X230^1",
+        "current_goal_text": "extract-conclusion-params c0 \n (app\n   [global (indt «HasB.axioms_»), \n    app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0]) X230^1",
         "current_goal_predicate": "extract-conclusion-params",
         "failed_attempts": [
           {
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (app [global A1 | A2]) A3) :- (!), \n (factory-alias->gref A1 A4), (factory-nparams A4 A5), \n (std.map A2 (copy-pack-holes A0) A6), (std.spy (std.take A5 A6 A3)).",
+                "rule_text": "(extract-conclusion-params A0 (app [global A1 | A2]) A3) :- (!), \n (factory-alias->gref A1 A4), (factory-nparams A4 A5), \n (std.map A2 (copy-pack-holes A0) A6), (std.spy (std.take A5 A6 A3)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 117,
                     "column": 0,
                     "character": 4090
@@ -291991,13 +282656,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                  "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 115,
                       "column": 0,
                       "character": 3974
@@ -292016,8 +282679,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1772 },
               {
-                "goal_text":
-                  "factory-alias->gref (indt «HasB.axioms_») X236^2",
+                "goal_text": "factory-alias->gref (indt «HasB.axioms_») X236^2",
                 "goal_id": 1773
               },
               {
@@ -292025,8 +282687,7 @@
                 "goal_id": 1774
               },
               {
-                "goal_text":
-                  "std.map\n [app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1], c0] (copy-pack-holes c0) X238^2",
+                "goal_text": "std.map\n [app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1], c0] (copy-pack-holes c0) X238^2",
                 "goal_id": 1775
               },
               {
@@ -292043,13 +282704,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -292074,13 +282733,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -292114,8 +282771,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -292191,13 +282847,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -292212,8 +282866,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -292232,8 +282885,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -292328,13 +282980,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -292426,13 +283076,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -292447,13 +283095,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -292468,13 +283114,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -292489,13 +283133,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -292567,13 +283209,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -292664,13 +283304,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -292704,13 +283342,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -292744,13 +283380,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -292765,13 +283399,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -293071,13 +283703,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -293096,8 +283726,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -293122,13 +283751,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -293143,8 +283770,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -293179,18 +283805,15 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "extract-conclusion-params c0 \n (app\n   [global (indt «HasB.axioms_»), \n    app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0]) X230^1",
+              "goal_text": "extract-conclusion-params c0 \n (app\n   [global (indt «HasB.axioms_»), \n    app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0]) X230^1",
               "goal_id": 1771
             },
             "cut_branch": {
-              "rule_text":
-                "(extract-conclusion-params A0 A1 A2) :- (whd1 A1 A3), (!), \n (extract-conclusion-params A0 A3 A2).",
+              "rule_text": "(extract-conclusion-params A0 A1 A2) :- (whd1 A1 A3), (!), \n (extract-conclusion-params A0 A3 A2).",
               "rule_loc": [
                 "File",
                 {
-                  "filename":
-                    "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                  "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                   "line": 122,
                   "column": 0,
                   "character": 4303
@@ -293210,8 +283833,7 @@
       "Inference",
       {
         "current_goal_id": 1773,
-        "current_goal_text":
-          "factory-alias->gref (indt «HasB.axioms_») X236^2",
+        "current_goal_text": "factory-alias->gref (indt «HasB.axioms_») X236^2",
         "current_goal_predicate": "factory-alias->gref",
         "failed_attempts": [],
         "successful_attempts": [
@@ -293220,13 +283842,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
+                  "rule_text": "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 74,
                       "column": 0,
                       "character": 2385
@@ -293255,13 +283875,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
+                "rule_text": "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 74,
                     "column": 0,
                     "character": 2385
@@ -293276,13 +283894,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -293307,13 +283923,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -293347,8 +283961,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -293424,13 +284037,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -293445,8 +284056,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -293465,8 +284075,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -293561,13 +284170,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -293659,13 +284266,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -293680,13 +284285,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -293701,13 +284304,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -293722,13 +284323,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -293800,13 +284399,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -293897,13 +284494,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -293937,13 +284532,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -293977,13 +284570,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -293998,13 +284589,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -294304,13 +284893,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -294329,8 +284916,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -294355,13 +284941,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -294376,8 +284960,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -294416,8 +284999,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -294441,8 +285023,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «HasA.Axioms_») (const «HasA.phant_Build») \n  «interleave_context.HasA.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «HasA.Axioms_») (const «HasA.phant_Build») \n  «interleave_context.HasA.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -294466,8 +285047,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -294491,8 +285071,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «HasB.Axioms_») (const «HasB.phant_Build») \n  «interleave_context.HasB.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «HasB.Axioms_») (const «HasB.phant_Build») \n  «interleave_context.HasB.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -294516,8 +285095,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -294541,8 +285119,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «IsSelfA.Axioms_») (const «IsSelfA.phant_Build») \n  «interleave_context.IsSelfA.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «IsSelfA.Axioms_») (const «IsSelfA.phant_Build») \n  «interleave_context.IsSelfA.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -294566,8 +285143,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -294591,8 +285167,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indc «IsSelfA'.Axioms_») (const «IsSelfA'.phant_Build») \n  «interleave_context.IsSelfA'.Build») :- .",
+                "rule_text": "(phant-abbrev (indc «IsSelfA'.Axioms_») (const «IsSelfA'.phant_Build») \n  «interleave_context.IsSelfA'.Build») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -294620,8 +285195,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -294640,13 +285214,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
+                "rule_text": "(factory-alias->gref A0 A1) :- (phant-abbrev A1 A0 _), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 74,
                     "column": 0,
                     "character": 2385
@@ -294661,13 +285233,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -294692,13 +285262,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -294732,8 +285300,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -294809,13 +285376,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -294830,8 +285395,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -294850,8 +285414,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -294946,13 +285509,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -295044,13 +285605,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -295065,13 +285624,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -295086,13 +285643,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -295107,13 +285662,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -295185,13 +285738,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -295282,13 +285833,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -295322,13 +285871,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -295362,13 +285909,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -295383,13 +285928,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -295689,13 +286232,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -295714,8 +286255,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -295740,13 +286280,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -295761,8 +286299,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -295794,8 +286331,7 @@
       "Inference",
       {
         "current_goal_id": 1773,
-        "current_goal_text":
-          "factory-alias->gref (indt «HasB.axioms_») X236^2",
+        "current_goal_text": "factory-alias->gref (indt «HasB.axioms_») X236^2",
         "current_goal_predicate": "factory-alias->gref",
         "failed_attempts": [],
         "successful_attempts": [
@@ -295804,13 +286340,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
+                  "rule_text": "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 75,
                       "column": 0,
                       "character": 2443
@@ -295839,13 +286373,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
+                "rule_text": "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 75,
                     "column": 0,
                     "character": 2443
@@ -295860,13 +286392,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -295891,13 +286421,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -295931,8 +286459,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -296008,13 +286535,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -296029,8 +286554,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -296049,8 +286573,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -296145,13 +286668,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -296243,13 +286764,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -296264,13 +286783,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -296285,13 +286802,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -296306,13 +286821,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -296384,13 +286897,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -296481,13 +286992,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -296521,13 +287030,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -296561,13 +287068,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -296582,13 +287087,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -296888,13 +287391,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -296913,8 +287414,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -296939,13 +287439,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -296960,8 +287458,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -297000,8 +287497,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasB.axioms_») (const «HasB.phant_axioms») \n  «interleave_context.HasB.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -297022,8 +287518,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                  "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                   "rule_loc": [
                     "File",
                     {
@@ -297052,8 +287547,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
+                "rule_text": "(phant-abbrev (indt «HasA.axioms_») (const «HasA.phant_axioms») \n  «interleave_context.HasA.axioms») :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -297072,13 +287566,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
+                "rule_text": "(factory-alias->gref A0 A0) :- (phant-abbrev A0 _ _), (!).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 75,
                     "column": 0,
                     "character": 2443
@@ -297093,13 +287585,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -297124,13 +287614,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -297164,8 +287652,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -297241,13 +287728,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -297262,8 +287747,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -297282,8 +287766,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -297378,13 +287861,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -297476,13 +287957,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -297497,13 +287976,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -297518,13 +287995,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -297539,13 +288014,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -297617,13 +288090,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -297714,13 +288185,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -297754,13 +288223,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -297794,13 +288261,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -297815,13 +288280,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -298121,13 +288584,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -298146,8 +288607,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -298172,13 +288632,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -298193,8 +288651,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -298233,8 +288690,7 @@
               "goal_id": 1779
             },
             "cut_branch": {
-              "rule_text":
-                "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
+              "rule_text": "(phant-abbrev (indt «IsSelfA.axioms_») (const «IsSelfA.phant_axioms») \n  «interleave_context.IsSelfA.axioms») :- .",
               "rule_loc": [
                 "File",
                 {
@@ -298252,8 +288708,7 @@
               "goal_id": 1779
             },
             "cut_branch": {
-              "rule_text":
-                "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
+              "rule_text": "(phant-abbrev (indt «IsSelfA'.axioms_») (const «IsSelfA'.phant_axioms») \n  «interleave_context.IsSelfA'.axioms») :- .",
               "rule_loc": [
                 "File",
                 {
@@ -298267,13 +288722,11 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-alias->gref (indt «HasB.axioms_») X236^2",
+              "goal_text": "factory-alias->gref (indt «HasB.axioms_») X236^2",
               "goal_id": 1773
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt «A.axioms_») (indt «A.axioms_»)) :- .",
+              "rule_text": "(factory-alias->gref (indt «A.axioms_») (indt «A.axioms_»)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -298287,13 +288740,11 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-alias->gref (indt «HasB.axioms_») X236^2",
+              "goal_text": "factory-alias->gref (indt «HasB.axioms_») X236^2",
               "goal_id": 1773
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt «B.axioms_») (indt «B.axioms_»)) :- .",
+              "rule_text": "(factory-alias->gref (indt «B.axioms_») (indt «B.axioms_»)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -298307,13 +288758,11 @@
           },
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "factory-alias->gref (indt «HasB.axioms_») X236^2",
+              "goal_text": "factory-alias->gref (indt «HasB.axioms_») X236^2",
               "goal_id": 1773
             },
             "cut_branch": {
-              "rule_text":
-                "(factory-alias->gref (indt «SelfA.axioms_») (indt «SelfA.axioms_»)) :- .",
+              "rule_text": "(factory-alias->gref (indt «SelfA.axioms_») (indt «SelfA.axioms_»)) :- .",
               "rule_loc": [
                 "File",
                 {
@@ -298366,8 +288815,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-nparams (indt «HasB.axioms_») 1) :- .",
+                "rule_text": "(factory-nparams (indt «HasB.axioms_») 1) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -298388,8 +288836,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(factory-nparams (indt «HasA.axioms_») 1) :- .",
+                  "rule_text": "(factory-nparams (indt «HasA.axioms_») 1) :- .",
                   "rule_loc": [
                     "File",
                     {
@@ -298418,8 +288865,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-nparams (indt «HasA.axioms_») 1) :- .",
+                "rule_text": "(factory-nparams (indt «HasA.axioms_») 1) :- .",
                 "rule_loc": [
                   "File",
                   {
@@ -298438,13 +288884,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -298469,13 +288913,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -298509,8 +288951,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -298586,13 +289027,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -298607,8 +289046,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -298627,8 +289065,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -298723,13 +289160,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -298821,13 +289256,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -298842,13 +289275,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -298863,13 +289294,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -298884,13 +289313,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -298962,13 +289389,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -299059,13 +289484,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -299099,13 +289522,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -299139,13 +289560,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -299160,13 +289579,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -299466,13 +289883,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -299491,8 +289906,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -299517,13 +289931,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -299538,8 +289950,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -299571,8 +289982,7 @@
       "Inference",
       {
         "current_goal_id": 1775,
-        "current_goal_text":
-          "std.map\n [app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1], c0] (copy-pack-holes c0) X238^2",
+        "current_goal_text": "std.map\n [app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1], c0] (copy-pack-holes c0) X238^2",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -299581,8 +289991,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -299606,8 +290015,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "copy-pack-holes c0 \n (app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1]) X239^2",
+                "goal_text": "copy-pack-holes c0 \n (app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1]) X239^2",
                 "goal_id": 1781
               },
               {
@@ -299624,8 +290032,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -299644,13 +290051,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -299675,13 +290080,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -299715,8 +290118,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -299792,13 +290194,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -299813,8 +290213,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -299833,8 +290232,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -299929,13 +290327,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -300027,13 +290423,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -300048,13 +290442,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -300069,13 +290461,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -300090,13 +290480,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -300168,13 +290556,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -300265,13 +290651,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -300305,13 +290689,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -300345,13 +290727,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -300366,13 +290746,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -300672,13 +291050,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -300697,8 +291073,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -300723,13 +291098,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -300744,8 +291117,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -300777,8 +291149,7 @@
       "Inference",
       {
         "current_goal_id": 1781,
-        "current_goal_text":
-          "copy-pack-holes c0 \n (app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1]) X239^2",
+        "current_goal_text": "copy-pack-holes c0 \n (app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1]) X239^2",
         "current_goal_predicate": "copy-pack-holes",
         "failed_attempts": [],
         "successful_attempts": [
@@ -300787,13 +291158,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                  "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                       "line": 318,
                       "column": 0,
                       "character": 12866
@@ -300820,8 +291189,7 @@
                 "goal_id": 1784
               },
               {
-                "goal_text":
-                  "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X243^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X243^2 | c6] c3) | X242^2]\n =>\n copy\n  (app\n    [global\n      (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n     c0, c1]) X239^2",
+                "goal_text": "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X243^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X243^2 | c6] c3) | X242^2]\n =>\n copy\n  (app\n    [global\n      (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n     c0, c1]) X239^2",
                 "goal_id": 1785
               }
             ],
@@ -300834,13 +291202,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -300855,8 +291221,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -300875,13 +291240,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -300906,13 +291269,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -300946,8 +291307,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -301023,13 +291383,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -301044,8 +291402,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -301064,8 +291421,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -301160,13 +291516,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -301258,13 +291612,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -301279,13 +291631,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -301300,13 +291650,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -301321,13 +291669,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -301399,13 +291745,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -301496,13 +291840,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -301536,13 +291878,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -301576,13 +291916,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -301597,13 +291935,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -301903,13 +292239,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -301928,8 +292262,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -301954,13 +292287,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -301975,8 +292306,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -302017,13 +292347,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                  "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 200,
                       "column": 0,
                       "character": 7260
@@ -302052,13 +292380,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -302073,13 +292399,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -302094,8 +292418,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -302114,13 +292437,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -302145,13 +292466,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -302185,8 +292504,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -302262,13 +292580,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -302283,8 +292599,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -302303,8 +292618,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -302399,13 +292713,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -302497,13 +292809,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -302518,13 +292828,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -302539,13 +292847,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -302560,13 +292866,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -302638,13 +292942,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -302735,13 +293037,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -302775,13 +293075,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -302815,13 +293113,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -302836,13 +293132,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -303142,13 +293436,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -303167,8 +293459,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -303193,13 +293484,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -303214,8 +293503,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -303256,8 +293544,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                  "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -303276,8 +293563,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "findall_solutions (local-canonical X244^2) X245^2",
+                "goal_text": "findall_solutions (local-canonical X244^2) X245^2",
                 "goal_id": 1788
               }
             ],
@@ -303290,8 +293576,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -303310,13 +293595,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -303331,13 +293614,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -303352,8 +293633,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -303372,13 +293652,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -303403,13 +293681,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -303443,8 +293719,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -303520,13 +293795,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -303541,8 +293814,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -303561,8 +293833,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -303657,13 +293928,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -303755,13 +294024,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -303776,13 +294043,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -303797,13 +294062,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -303818,13 +294081,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -303896,13 +294157,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -303993,13 +294252,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -304033,13 +294290,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -304073,13 +294328,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -304094,13 +294347,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -304400,13 +294651,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -304425,8 +294674,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -304451,13 +294699,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -304472,8 +294718,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -304505,8 +294750,7 @@
       "Findall",
       {
         "findall_goal_id": 1788,
-        "findall_goal_text":
-          "findall_solutions (local-canonical X244^2) X245^2",
+        "findall_goal_text": "findall_solutions (local-canonical X244^2) X245^2",
         "findall_cards": [
           {
             "step_id": 0,
@@ -304546,8 +294790,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -304566,13 +294809,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -304587,13 +294828,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -304608,8 +294847,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -304628,13 +294866,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -304659,13 +294895,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -304699,8 +294933,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -304776,13 +295009,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -304797,8 +295028,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -304817,8 +295047,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -304913,13 +295142,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -305011,13 +295238,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -305032,13 +295257,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -305053,13 +295276,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -305074,13 +295295,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -305152,13 +295371,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -305249,13 +295466,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -305289,13 +295504,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -305329,13 +295542,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -305350,13 +295561,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -305656,13 +295865,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -305681,8 +295888,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -305707,13 +295913,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -305728,8 +295932,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -305813,13 +296016,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -305834,13 +296035,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -305855,8 +296054,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -305875,13 +296073,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -305906,13 +296102,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -305946,8 +296140,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -306023,13 +296216,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -306044,8 +296235,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -306064,8 +296254,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -306160,13 +296349,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -306258,13 +296445,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -306279,13 +296464,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -306300,13 +296483,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -306321,13 +296502,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -306399,13 +296578,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -306496,13 +296673,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -306536,13 +296711,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -306576,13 +296749,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -306597,13 +296768,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -306903,13 +297072,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -306928,8 +297095,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -306954,13 +297120,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -306975,8 +297139,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -307021,8 +297184,7 @@
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
                       "line": 196,
                       "column": 0,
                       "character": 7411
@@ -307046,8 +297208,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 7411
@@ -307062,13 +297223,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -307083,8 +297242,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -307103,13 +297261,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -307134,13 +297290,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -307174,8 +297328,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -307251,13 +297404,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -307272,8 +297423,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -307292,8 +297442,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -307388,13 +297537,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -307486,13 +297633,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -307507,13 +297652,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -307528,13 +297671,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -307549,13 +297690,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -307627,13 +297766,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -307724,13 +297861,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -307764,13 +297899,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -307804,13 +297937,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -307825,13 +297956,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -308131,13 +298260,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -308156,8 +298283,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -308182,13 +298308,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -308203,8 +298327,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -308236,8 +298359,7 @@
       "Inference",
       {
         "current_goal_id": 1785,
-        "current_goal_text":
-          "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X243^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X243^2 | c6] c3)] =>\n copy\n  (app\n    [global\n      (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n     c0, c1]) X239^2",
+        "current_goal_text": "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X243^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X243^2 | c6] c3)] =>\n copy\n  (app\n    [global\n      (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n     c0, c1]) X239^2",
         "current_goal_predicate": "=>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -308248,8 +298370,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "copy\n (app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1]) X239^2",
+                "goal_text": "copy\n (app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1]) X239^2",
                 "goal_id": 1791
               }
             ],
@@ -308267,13 +298388,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -308288,8 +298407,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -308308,13 +298426,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -308339,13 +298455,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -308379,8 +298493,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -308456,13 +298569,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -308477,8 +298588,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -308497,8 +298607,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -308593,13 +298702,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -308691,13 +298798,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -308712,13 +298817,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -308733,13 +298836,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -308754,13 +298855,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -308832,13 +298931,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -308929,13 +299026,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -308969,13 +299064,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -309009,13 +299102,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -309030,13 +299121,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -309336,13 +299425,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -309361,8 +299448,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -309387,13 +299473,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -309408,8 +299492,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -309441,8 +299524,7 @@
       "Inference",
       {
         "current_goal_id": 1791,
-        "current_goal_text":
-          "copy\n (app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1]) X239^2",
+        "current_goal_text": "copy\n (app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1]) X239^2",
         "current_goal_predicate": "copy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -309451,8 +299533,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X243^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X243^2 | A4] A1).",
+                  "rule_text": "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X243^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X243^2 | A4] A1).",
                   "rule_loc": [ "Context", 577 ]
                 }
               ],
@@ -309470,8 +299551,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "pack? (const «Builders_18.Builders_18_T__canonical__interleave_context_A») \n _",
+                "goal_text": "pack? (const «Builders_18.Builders_18_T__canonical__interleave_context_A») \n _",
                 "goal_id": 1792
               },
               { "goal_text": "!", "goal_id": 1793 },
@@ -309482,8 +299562,7 @@
               { "goal_text": "copy c0 X243^2", "goal_id": 1795 },
               { "goal_text": "std.map X248^2 copy X249^2", "goal_id": 1796 },
               {
-                "goal_text":
-                  "std.rev [global (const «elpi.hole»), X243^2 | X249^2] X246^2",
+                "goal_text": "std.rev [global (const «elpi.hole»), X243^2 | X249^2] X246^2",
                 "goal_id": 1797
               }
             ],
@@ -309496,8 +299575,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X243^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X243^2 | A4] A1).",
+                "rule_text": "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X243^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X243^2 | A4] A1).",
                 "rule_loc": [ "Context", 577 ]
               }
             ],
@@ -309513,13 +299591,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -309534,8 +299610,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -309554,13 +299629,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -309585,13 +299658,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -309625,8 +299696,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -309702,13 +299772,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -309723,8 +299791,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -309743,8 +299810,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -309839,13 +299905,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -309937,13 +300001,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -309958,13 +300020,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -309979,13 +300039,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -310000,13 +300058,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -310078,13 +300134,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -310175,13 +300229,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -310215,13 +300267,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -310255,13 +300305,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -310276,13 +300324,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -310582,13 +300628,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -310607,8 +300651,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -310633,13 +300676,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -310654,8 +300695,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -310687,8 +300727,7 @@
       "Inference",
       {
         "current_goal_id": 1792,
-        "current_goal_text":
-          "pack? (const «Builders_18.Builders_18_T__canonical__interleave_context_A») \n _",
+        "current_goal_text": "pack? (const «Builders_18.Builders_18_T__canonical__interleave_context_A») \n _",
         "current_goal_predicate": "pack?",
         "failed_attempts": [],
         "successful_attempts": [],
@@ -310698,8 +300737,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X243^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X243^2 | A4] A1).",
+                "rule_text": "(copy (app [global A5 | A0]) (app [global A5 | A1])) :- (pack? A5 _), (!), \n (std.rev A0 [A2, c0 | A3]), (copy c0 X243^2), (std.map A3 copy A4), \n (std.rev [global (const «elpi.hole»), X243^2 | A4] A1).",
                 "rule_loc": [ "Context", 577 ]
               }
             ],
@@ -310715,13 +300753,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -310736,8 +300772,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -310756,13 +300791,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -310787,13 +300820,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -310827,8 +300858,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -310904,13 +300934,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -310925,8 +300953,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -310945,8 +300972,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -311041,13 +301067,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -311139,13 +301163,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -311160,13 +301182,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -311181,13 +301201,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -311202,13 +301220,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -311280,13 +301296,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -311377,13 +301391,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -311417,13 +301429,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -311457,13 +301467,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -311478,13 +301486,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -311784,13 +301790,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -311809,8 +301813,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -311835,13 +301838,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -311856,8 +301857,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -311889,8 +301889,7 @@
       "Inference",
       {
         "current_goal_id": 1791,
-        "current_goal_text":
-          "copy\n (app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1]) X239^2",
+        "current_goal_text": "copy\n (app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1]) X239^2",
         "current_goal_predicate": "copy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -311899,8 +301898,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                  "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -311922,14 +301920,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "name\n (app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1])",
+                "goal_text": "name\n (app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1])",
                 "goal_id": 1798
               },
               { "goal_text": "!", "goal_id": 1799 },
               {
-                "goal_text":
-                  "app\n [global\n   (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n  c0, c1] = X239^2",
+                "goal_text": "app\n [global\n   (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n  c0, c1] = X239^2",
                 "goal_id": 1800
               },
               { "goal_text": "!", "goal_id": 1801 }
@@ -311943,8 +301939,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -311968,13 +301963,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -311989,8 +301982,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -312009,13 +302001,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -312040,13 +302030,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -312080,8 +302068,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -312157,13 +302144,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -312178,8 +302163,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -312198,8 +302182,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -312294,13 +302277,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -312392,13 +302373,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -312413,13 +302392,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -312434,13 +302411,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -312455,13 +302430,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -312533,13 +302506,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -312630,13 +302601,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -312670,13 +302639,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -312710,13 +302677,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -312731,13 +302696,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -313037,13 +303000,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -313062,8 +303023,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -313088,13 +303048,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -313109,8 +303067,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -313142,8 +303099,7 @@
       "Inference",
       {
         "current_goal_id": 1798,
-        "current_goal_text":
-          "name\n (app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1])",
+        "current_goal_text": "name\n (app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1])",
         "current_goal_predicate": "name",
         "failed_attempts": [
           { "rule": [ "BuiltinRule", [ "FFI", "name" ] ], "events": [] }
@@ -313160,8 +303116,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -313185,13 +303140,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -313206,8 +303159,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -313226,13 +303178,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -313257,13 +303207,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -313297,8 +303245,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -313374,13 +303321,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -313395,8 +303340,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -313415,8 +303359,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -313511,13 +303454,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -313609,13 +303550,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -313630,13 +303569,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -313651,13 +303588,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -313672,13 +303607,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -313750,13 +303683,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -313847,13 +303778,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -313887,13 +303816,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -313927,13 +303854,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -313948,13 +303873,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -314254,13 +304177,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -314279,8 +304200,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -314305,13 +304225,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -314326,8 +304244,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -314359,8 +304276,7 @@
       "Inference",
       {
         "current_goal_id": 1791,
-        "current_goal_text":
-          "copy\n (app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1]) X239^2",
+        "current_goal_text": "copy\n (app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1]) X239^2",
         "current_goal_predicate": "copy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -314369,8 +304285,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                  "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -314393,8 +304308,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1802 },
               {
-                "goal_text":
-                  "std.map\n [global\n   (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n  c0, c1] copy X250^2",
+                "goal_text": "std.map\n [global\n   (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n  c0, c1] copy X250^2",
                 "goal_id": 1803
               }
             ],
@@ -314407,8 +304321,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -314432,13 +304345,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -314453,8 +304364,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -314473,13 +304383,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -314504,13 +304412,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -314544,8 +304450,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -314621,13 +304526,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -314642,8 +304545,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -314662,8 +304564,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -314758,13 +304659,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -314856,13 +304755,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -314877,13 +304774,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -314898,13 +304793,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -314919,13 +304812,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -314997,13 +304888,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -315094,13 +304983,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -315134,13 +305021,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -315174,13 +305059,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -315195,13 +305078,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -315501,13 +305382,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -315526,8 +305405,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -315552,13 +305430,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -315573,8 +305449,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -315612,8 +305487,7 @@
       "Inference",
       {
         "current_goal_id": 1803,
-        "current_goal_text":
-          "std.map\n [global\n   (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n  c0, c1] copy X250^2",
+        "current_goal_text": "std.map\n [global\n   (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n  c0, c1] copy X250^2",
         "current_goal_predicate": "std.map",
         "failed_attempts": [],
         "successful_attempts": [
@@ -315622,8 +305496,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -315647,8 +305520,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "copy\n (global\n   (const «Builders_18.Builders_18_T__canonical__interleave_context_A»)) \n X251^2",
+                "goal_text": "copy\n (global\n   (const «Builders_18.Builders_18_T__canonical__interleave_context_A»)) \n X251^2",
                 "goal_id": 1804
               },
               {
@@ -315665,8 +305537,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -315685,8 +305556,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -315710,13 +305580,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -315731,8 +305599,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -315751,13 +305618,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -315782,13 +305647,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -315822,8 +305685,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -315899,13 +305761,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -315920,8 +305780,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -315940,8 +305799,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -316036,13 +305894,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -316134,13 +305990,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -316155,13 +306009,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -316176,13 +306028,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -316197,13 +306047,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -316275,13 +306123,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -316372,13 +306218,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -316412,13 +306256,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -316452,13 +306294,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -316473,13 +306313,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -316779,13 +306617,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -316804,8 +306640,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -316830,13 +306665,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -316851,8 +306684,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -316884,8 +306716,7 @@
       "Inference",
       {
         "current_goal_id": 1804,
-        "current_goal_text":
-          "copy\n (global\n   (const «Builders_18.Builders_18_T__canonical__interleave_context_A»)) \n X251^2",
+        "current_goal_text": "copy\n (global\n   (const «Builders_18.Builders_18_T__canonical__interleave_context_A»)) \n X251^2",
         "current_goal_predicate": "copy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -316894,8 +306725,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                  "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -316917,14 +306747,12 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "name\n (global\n   (const «Builders_18.Builders_18_T__canonical__interleave_context_A»))",
+                "goal_text": "name\n (global\n   (const «Builders_18.Builders_18_T__canonical__interleave_context_A»))",
                 "goal_id": 1806
               },
               { "goal_text": "!", "goal_id": 1807 },
               {
-                "goal_text":
-                  "global (const «Builders_18.Builders_18_T__canonical__interleave_context_A»)\n = X251^2",
+                "goal_text": "global (const «Builders_18.Builders_18_T__canonical__interleave_context_A»)\n = X251^2",
                 "goal_id": 1808
               },
               { "goal_text": "!", "goal_id": 1809 }
@@ -316938,8 +306766,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -316958,8 +306785,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -316978,8 +306804,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -317003,13 +306828,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -317024,8 +306847,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -317044,13 +306866,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -317075,13 +306895,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -317115,8 +306933,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -317192,13 +307009,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -317213,8 +307028,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -317233,8 +307047,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -317329,13 +307142,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -317427,13 +307238,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -317448,13 +307257,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -317469,13 +307276,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -317490,13 +307295,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -317568,13 +307371,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -317665,13 +307466,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -317705,13 +307504,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -317745,13 +307542,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -317766,13 +307561,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -318072,13 +307865,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -318097,8 +307888,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -318123,13 +307913,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -318144,8 +307932,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -318177,8 +307964,7 @@
       "Inference",
       {
         "current_goal_id": 1806,
-        "current_goal_text":
-          "name\n (global\n   (const «Builders_18.Builders_18_T__canonical__interleave_context_A»))",
+        "current_goal_text": "name\n (global\n   (const «Builders_18.Builders_18_T__canonical__interleave_context_A»))",
         "current_goal_predicate": "name",
         "failed_attempts": [
           { "rule": [ "BuiltinRule", [ "FFI", "name" ] ], "events": [] }
@@ -318195,8 +307981,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -318215,8 +308000,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -318235,8 +308019,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -318260,13 +308043,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -318281,8 +308062,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -318301,13 +308081,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -318332,13 +308110,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -318372,8 +308148,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -318449,13 +308224,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -318470,8 +308243,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -318490,8 +308262,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -318586,13 +308357,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -318684,13 +308453,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -318705,13 +308472,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -318726,13 +308491,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -318747,13 +308510,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -318825,13 +308586,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -318922,13 +308681,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -318962,13 +308719,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -319002,13 +308757,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -319023,13 +308776,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -319329,13 +309080,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -319354,8 +309103,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -319380,13 +309128,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -319401,8 +309147,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -319434,8 +309179,7 @@
       "Inference",
       {
         "current_goal_id": 1804,
-        "current_goal_text":
-          "copy\n (global\n   (const «Builders_18.Builders_18_T__canonical__interleave_context_A»)) \n X251^2",
+        "current_goal_text": "copy\n (global\n   (const «Builders_18.Builders_18_T__canonical__interleave_context_A»)) \n X251^2",
         "current_goal_predicate": "copy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -319496,8 +309240,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -319516,8 +309259,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -319541,13 +309283,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -319562,8 +309302,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -319582,13 +309321,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -319613,13 +309350,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -319653,8 +309388,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -319730,13 +309464,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -319751,8 +309483,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -319771,8 +309502,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -319867,13 +309597,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -319965,13 +309693,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -319986,13 +309712,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -320007,13 +309731,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -320028,13 +309750,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -320106,13 +309826,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -320203,13 +309921,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -320243,13 +309959,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -320283,13 +309997,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -320304,13 +310016,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -320610,13 +310320,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -320635,8 +310343,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -320661,13 +310368,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -320682,8 +310387,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -320730,8 +310434,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -320763,8 +310466,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -320783,8 +310485,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -320803,8 +310504,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -320828,13 +310528,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -320849,8 +310547,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -320869,13 +310566,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -320900,13 +310595,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -320940,8 +310633,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -321017,13 +310709,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -321038,8 +310728,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -321058,8 +310747,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -321154,13 +310842,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -321252,13 +310938,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -321273,13 +310957,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -321294,13 +310976,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -321315,13 +310995,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -321393,13 +311071,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -321490,13 +311166,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -321530,13 +311204,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -321570,13 +311242,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -321591,13 +311261,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -321897,13 +311565,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -321922,8 +311588,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -321948,13 +311613,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -321969,8 +311632,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -322011,8 +311673,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                  "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -322025,8 +311686,7 @@
                 }
               ],
               "events": [
-                [ "Assign", "A0 := c0" ],
-                [ "Assign", "A1 := X253^2" ]
+                [ "Assign", "A0 := c0" ], [ "Assign", "A1 := X253^2" ]
               ]
             },
             "siblings": [
@@ -322044,8 +311704,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -322064,8 +311723,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -322084,8 +311742,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -322104,8 +311761,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -322129,13 +311785,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -322150,8 +311804,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -322170,13 +311823,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -322201,13 +311852,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -322241,8 +311890,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -322318,13 +311966,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -322339,8 +311985,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -322359,8 +312004,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -322455,13 +312099,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -322553,13 +312195,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -322574,13 +312214,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -322595,13 +312233,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -322616,13 +312252,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -322694,13 +312328,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -322791,13 +312423,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -322831,13 +312461,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -322871,13 +312499,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -322892,13 +312518,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -323198,13 +312822,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -323223,8 +312845,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -323249,13 +312870,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -323270,8 +312889,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -323327,8 +312945,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -323347,8 +312964,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -323367,8 +312983,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -323387,8 +313002,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -323412,13 +313026,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -323433,8 +313045,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -323453,13 +313064,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -323484,13 +313093,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -323524,8 +313131,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -323601,13 +313207,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -323622,8 +313226,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -323642,8 +313245,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -323738,13 +313340,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -323836,13 +313436,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -323857,13 +313455,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -323878,13 +313474,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -323899,13 +313493,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -323977,13 +313569,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -324074,13 +313664,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -324114,13 +313702,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -324154,13 +313740,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -324175,13 +313759,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -324481,13 +314063,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -324506,8 +314086,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -324532,13 +314111,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -324553,8 +314130,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -324615,8 +314191,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -324635,8 +314210,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -324655,8 +314229,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -324675,8 +314248,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -324700,13 +314272,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -324721,8 +314291,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -324741,13 +314310,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -324772,13 +314339,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -324812,8 +314377,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -324889,13 +314453,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -324910,8 +314472,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -324930,8 +314491,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -325026,13 +314586,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -325124,13 +314682,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -325145,13 +314701,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -325166,13 +314720,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -325187,13 +314739,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -325265,13 +314815,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -325362,13 +314910,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -325402,13 +314948,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -325442,13 +314986,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -325463,13 +315005,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -325769,13 +315309,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -325794,8 +315332,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -325820,13 +315357,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -325841,8 +315376,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -325904,8 +315438,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -325924,8 +315457,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -325944,8 +315476,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -325964,8 +315495,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -325989,13 +315519,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -326010,8 +315538,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -326030,13 +315557,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -326061,13 +315586,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -326101,8 +315624,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -326178,13 +315700,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -326199,8 +315719,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -326219,8 +315738,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -326315,13 +315833,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -326413,13 +315929,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -326434,13 +315948,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -326455,13 +315967,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -326476,13 +315986,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -326554,13 +316062,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -326651,13 +316157,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -326691,13 +316195,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -326731,13 +316233,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -326752,13 +316252,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -327058,13 +316556,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -327083,8 +316579,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -327109,13 +316604,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -327130,8 +316623,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -327178,8 +316670,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -327211,8 +316702,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -327231,8 +316721,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -327251,8 +316740,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -327271,8 +316759,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -327296,13 +316783,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -327317,8 +316802,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -327337,13 +316821,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -327368,13 +316850,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -327408,8 +316888,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -327485,13 +316964,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -327506,8 +316983,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -327526,8 +317002,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -327622,13 +317097,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -327720,13 +317193,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -327741,13 +317212,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -327762,13 +317231,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -327783,13 +317250,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -327861,13 +317326,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -327958,13 +317421,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -327998,13 +317459,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -328038,13 +317497,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -328059,13 +317516,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -328365,13 +317820,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -328390,8 +317843,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -328416,13 +317868,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -328437,8 +317887,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -328479,8 +317928,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                  "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -328493,8 +317941,7 @@
                 }
               ],
               "events": [
-                [ "Assign", "A0 := c1" ],
-                [ "Assign", "A1 := X255^2" ]
+                [ "Assign", "A0 := c1" ], [ "Assign", "A1 := X255^2" ]
               ]
             },
             "siblings": [
@@ -328512,8 +317959,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -328532,8 +317978,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -328552,8 +317997,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -328572,8 +318016,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -328592,8 +318035,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -328617,13 +318059,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -328638,8 +318078,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -328658,13 +318097,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -328689,13 +318126,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -328729,8 +318164,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -328806,13 +318240,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -328827,8 +318259,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -328847,8 +318278,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -328943,13 +318373,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -329041,13 +318469,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -329062,13 +318488,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -329083,13 +318507,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -329104,13 +318526,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -329182,13 +318602,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -329279,13 +318697,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -329319,13 +318735,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -329359,13 +318773,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -329380,13 +318792,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -329686,13 +319096,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -329711,8 +319119,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -329737,13 +319144,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -329758,8 +319163,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -329815,8 +319219,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -329835,8 +319238,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -329855,8 +319257,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -329875,8 +319276,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -329895,8 +319295,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -329920,13 +319319,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -329941,8 +319338,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -329961,13 +319357,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -329992,13 +319386,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -330032,8 +319424,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -330109,13 +319500,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -330130,8 +319519,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -330150,8 +319538,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -330246,13 +319633,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -330344,13 +319729,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -330365,13 +319748,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -330386,13 +319767,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -330407,13 +319786,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -330485,13 +319862,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -330582,13 +319957,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -330622,13 +319995,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -330662,13 +320033,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -330683,13 +320052,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -330989,13 +320356,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -331014,8 +320379,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -331040,13 +320404,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -331061,8 +320423,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -331123,8 +320484,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -331143,8 +320503,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -331163,8 +320522,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -331183,8 +320541,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -331203,8 +320560,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -331228,13 +320584,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -331249,8 +320603,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -331269,13 +320622,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -331300,13 +320651,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -331340,8 +320689,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -331417,13 +320765,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -331438,8 +320784,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -331458,8 +320803,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -331554,13 +320898,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -331652,13 +320994,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -331673,13 +321013,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -331694,13 +321032,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -331715,13 +321051,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -331793,13 +321127,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -331890,13 +321222,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -331930,13 +321260,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -331970,13 +321298,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -331991,13 +321317,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -332297,13 +321621,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -332322,8 +321644,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -332348,13 +321669,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -332369,8 +321688,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -332432,8 +321750,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -332452,8 +321769,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -332472,8 +321788,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -332492,8 +321807,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -332512,8 +321826,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -332537,13 +321850,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -332558,8 +321869,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -332578,13 +321888,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -332609,13 +321917,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -332649,8 +321955,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -332726,13 +322031,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -332747,8 +322050,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -332767,8 +322069,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -332863,13 +322164,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -332961,13 +322260,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -332982,13 +322279,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -333003,13 +322298,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -333024,13 +322317,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -333102,13 +322393,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -333199,13 +322488,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -333239,13 +322526,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -333279,13 +322564,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -333300,13 +322583,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -333606,13 +322887,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -333631,8 +322910,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -333657,13 +322935,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -333678,8 +322954,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -333769,8 +323044,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -333789,8 +323063,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -333809,8 +323082,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -333829,8 +323101,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
+                "rule_text": "(copy (app A0) (app A1)) :- (!), (std.map A0 copy A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -333854,13 +323125,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -333875,8 +323144,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -333895,13 +323163,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -333926,13 +323192,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -333966,8 +323230,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -334043,13 +323306,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -334064,8 +323325,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -334084,8 +323344,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -334180,13 +323439,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -334278,13 +323535,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -334299,13 +323554,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -334320,13 +323573,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -334341,13 +323592,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -334419,13 +323668,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -334516,13 +323763,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -334556,13 +323801,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -334596,13 +323839,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -334617,13 +323858,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -334923,13 +324162,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -334948,8 +324185,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -334974,13 +324210,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -334995,8 +324229,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -335037,8 +324270,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                  "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                   "rule_loc": [
                     "File",
                     {
@@ -335076,8 +324308,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -335096,8 +324327,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -335116,13 +324346,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -335147,13 +324375,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -335187,8 +324413,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -335264,13 +324489,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -335285,8 +324508,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -335305,8 +324527,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -335401,13 +324622,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -335499,13 +324718,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -335520,13 +324737,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -335541,13 +324756,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -335562,13 +324775,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -335640,13 +324851,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -335737,13 +324946,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -335777,13 +324984,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -335817,13 +325022,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -335838,13 +325041,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -336144,13 +325345,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -336169,8 +325368,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -336195,13 +325393,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -336216,8 +325412,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -336258,13 +325453,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                  "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                       "line": 318,
                       "column": 0,
                       "character": 12866
@@ -336288,8 +325481,7 @@
                 "goal_id": 1828
               },
               {
-                "goal_text":
-                  "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X261^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X261^2 | c6] c3) | X260^2]\n => copy c0 X257^2",
+                "goal_text": "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X261^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X261^2 | c6] c3) | X260^2]\n => copy c0 X257^2",
                 "goal_id": 1829
               }
             ],
@@ -336302,13 +325494,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -336323,8 +325513,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -336343,8 +325532,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -336363,13 +325551,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -336394,13 +325580,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -336434,8 +325618,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -336511,13 +325694,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -336532,8 +325713,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -336552,8 +325732,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -336648,13 +325827,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -336746,13 +325923,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -336767,13 +325942,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -336788,13 +325961,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -336809,13 +325980,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -336887,13 +326056,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -336984,13 +326151,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -337024,13 +326189,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -337064,13 +326227,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -337085,13 +326246,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -337391,13 +326550,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -337416,8 +326573,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -337442,13 +326598,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -337463,8 +326617,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -337505,13 +326658,11 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                  "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                       "line": 200,
                       "column": 0,
                       "character": 7260
@@ -337540,13 +326691,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -337561,13 +326710,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -337582,8 +326729,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -337602,8 +326748,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -337622,13 +326767,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -337653,13 +326796,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -337693,8 +326834,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -337770,13 +326910,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -337791,8 +326929,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -337811,8 +326948,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -337907,13 +327043,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -338005,13 +327139,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -338026,13 +327158,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -338047,13 +327177,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -338068,13 +327196,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -338146,13 +327272,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -338243,13 +327367,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -338283,13 +327405,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -338323,13 +327443,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -338344,13 +327462,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -338650,13 +327766,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -338675,8 +327789,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -338701,13 +327814,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -338722,8 +327833,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -338764,8 +327874,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                  "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -338784,8 +327893,7 @@
             },
             "siblings": [
               {
-                "goal_text":
-                  "findall_solutions (local-canonical X262^2) X263^2",
+                "goal_text": "findall_solutions (local-canonical X262^2) X263^2",
                 "goal_id": 1832
               }
             ],
@@ -338798,8 +327906,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -338818,13 +327925,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -338839,13 +327944,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -338860,8 +327963,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -338880,8 +327982,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -338900,13 +328001,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -338931,13 +328030,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -338971,8 +328068,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -339048,13 +328144,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -339069,8 +328163,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -339089,8 +328182,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -339185,13 +328277,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -339283,13 +328373,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -339304,13 +328392,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -339325,13 +328411,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -339346,13 +328430,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -339424,13 +328506,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -339521,13 +328601,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -339561,13 +328639,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -339601,13 +328677,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -339622,13 +328696,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -339928,13 +329000,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -339953,8 +329023,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -339979,13 +329048,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -340000,8 +329067,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -340033,8 +329099,7 @@
       "Findall",
       {
         "findall_goal_id": 1832,
-        "findall_goal_text":
-          "findall_solutions (local-canonical X262^2) X263^2",
+        "findall_goal_text": "findall_solutions (local-canonical X262^2) X263^2",
         "findall_cards": [
           {
             "step_id": 0,
@@ -340074,8 +329139,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -340094,13 +329158,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -340115,13 +329177,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -340136,8 +329196,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -340156,8 +329215,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -340176,13 +329234,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -340207,13 +329263,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -340247,8 +329301,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -340324,13 +329377,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -340345,8 +329396,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -340365,8 +329415,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -340461,13 +329510,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -340559,13 +329606,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -340580,13 +329625,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -340601,13 +329644,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -340622,13 +329663,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -340700,13 +329739,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -340797,13 +329834,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -340837,13 +329872,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -340877,13 +329910,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -340898,13 +329929,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -341204,13 +330233,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -341229,8 +330256,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -341255,13 +330281,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -341276,8 +330300,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -341361,13 +330384,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
+                "rule_text": "(findall-local-canonical A0) :- (std.findall (local-canonical A1) A2), \n (std.map A2 local-canonical-gref A0).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 200,
                     "column": 0,
                     "character": 7260
@@ -341382,13 +330403,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -341403,8 +330422,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -341423,8 +330441,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -341443,13 +330460,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -341474,13 +330489,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -341514,8 +330527,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -341591,13 +330603,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -341612,8 +330622,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -341632,8 +330641,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -341728,13 +330736,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -341826,13 +330832,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -341847,13 +330851,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -341868,13 +330870,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -341889,13 +330889,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -341967,13 +330965,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -342064,13 +331060,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -342104,13 +331098,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -342144,13 +331136,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -342165,13 +331155,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -342471,13 +331459,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -342496,8 +331482,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -342522,13 +331507,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -342543,8 +331526,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -342589,8 +331571,7 @@
                   "rule_loc": [
                     "File",
                     {
-                      "filename":
-                        "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
+                      "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
                       "line": 196,
                       "column": 0,
                       "character": 7411
@@ -342614,8 +331595,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/stdpp.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 7411
@@ -342630,13 +331610,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -342651,8 +331629,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -342671,8 +331648,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -342691,13 +331667,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -342722,13 +331696,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -342762,8 +331734,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -342839,13 +331810,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -342860,8 +331829,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -342880,8 +331848,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -342976,13 +331943,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -343074,13 +332039,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -343095,13 +332058,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -343116,13 +332077,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -343137,13 +332096,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -343215,13 +332172,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -343312,13 +332267,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -343352,13 +332305,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -343392,13 +332343,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -343413,13 +332362,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -343719,13 +332666,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -343744,8 +332689,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -343770,13 +332714,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -343791,8 +332733,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -343824,8 +332765,7 @@
       "Inference",
       {
         "current_goal_id": 1829,
-        "current_goal_text":
-          "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X261^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X261^2 | c6] c3)] =>\n copy c0 X257^2",
+        "current_goal_text": "[pi c2 \\\n  pi c3 \\\n   pi c4 \\\n    pi c5 \\\n     pi c6 \\\n      pi c7 \\\n       copy (app [global c7 | c2]) (app [global c7 | c3]) :-\n        , (pack? c7 _) (!) (std.rev c2 [c4, c0 | c5]) (copy c0 X261^2) \n         (std.map c5 copy c6) \n         (std.rev [global (const «elpi.hole»), X261^2 | c6] c3)] =>\n copy c0 X257^2",
         "current_goal_predicate": "=>",
         "failed_attempts": [],
         "successful_attempts": [
@@ -343851,13 +332791,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -343872,8 +332810,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -343892,8 +332829,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -343912,13 +332848,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -343943,13 +332877,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -343983,8 +332915,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -344060,13 +332991,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -344081,8 +333010,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -344101,8 +333029,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -344197,13 +333124,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -344295,13 +333220,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -344316,13 +333239,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -344337,13 +333258,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -344358,13 +333277,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -344436,13 +333353,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -344533,13 +333448,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -344573,13 +333486,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -344613,13 +333524,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -344634,13 +333543,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -344940,13 +333847,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -344965,8 +333870,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -344991,13 +333895,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -345012,8 +333914,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -345054,8 +333955,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                  "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                   "rule_loc": [
                     "File",
                     {
@@ -345068,8 +333968,7 @@
                 }
               ],
               "events": [
-                [ "Assign", "A0 := c0" ],
-                [ "Assign", "A1 := X257^2" ]
+                [ "Assign", "A0 := c0" ], [ "Assign", "A1 := X257^2" ]
               ]
             },
             "siblings": [
@@ -345087,8 +333986,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -345112,13 +334010,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -345133,8 +334029,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -345153,8 +334048,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -345173,13 +334067,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -345204,13 +334096,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -345244,8 +334134,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -345321,13 +334210,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -345342,8 +334229,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -345362,8 +334248,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -345458,13 +334343,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -345556,13 +334439,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -345577,13 +334458,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -345598,13 +334477,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -345619,13 +334496,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -345697,13 +334572,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -345794,13 +334667,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -345834,13 +334705,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -345874,13 +334743,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -345895,13 +334762,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -346201,13 +335066,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -346226,8 +335089,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -346252,13 +335114,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -346273,8 +335133,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -346330,8 +335189,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -346355,13 +335213,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -346376,8 +335232,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -346396,8 +335251,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -346416,13 +335270,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -346447,13 +335299,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -346487,8 +335337,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -346564,13 +335413,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -346585,8 +335432,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -346605,8 +335451,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -346701,13 +335546,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -346799,13 +335642,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -346820,13 +335661,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -346841,13 +335680,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -346862,13 +335699,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -346940,13 +335775,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -347037,13 +335870,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -347077,13 +335908,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -347117,13 +335946,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -347138,13 +335965,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -347444,13 +336269,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -347469,8 +336292,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -347495,13 +336317,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -347516,8 +336336,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -347578,8 +336397,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -347603,13 +336421,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -347624,8 +336440,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -347644,8 +336459,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -347664,13 +336478,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -347695,13 +336507,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -347735,8 +336545,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -347812,13 +336621,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -347833,8 +336640,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -347853,8 +336659,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -347949,13 +336754,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -348047,13 +336850,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -348068,13 +336869,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -348089,13 +336888,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -348110,13 +336907,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -348188,13 +336983,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -348285,13 +337078,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -348325,13 +337116,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -348365,13 +337154,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -348386,13 +337173,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -348692,13 +337477,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -348717,8 +337500,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -348743,13 +337525,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -348764,8 +337544,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -348827,8 +337606,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
+                "rule_text": "(copy A0 A1) :- (name A0), (!), (A0 = A1), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -348852,13 +337630,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
+                "rule_text": "(copy-pack-holes A0 A1 A2) :- (findall-local-canonical A3), \n (coq.copy-clauses-for-unfold A3 A4), \n ([pi (c2 \\\n    (pi (c3 \\\n      (pi (c4 \\\n        (pi (c5 \\\n          (pi (c6 \\\n            (pi (c7 \\\n              (copy (app [global c5 | c0]) (app [global c5 | c1]) :-\n                , (pack? c5 _) (!) (std.rev c0 [c2, A0 | c3]) (copy A0 A5) \n                 (std.map c3 copy c4) \n                 (std.rev [global (const «elpi.hole»), A5 | c4] c1))))))))))))) | A4]\n   => copy A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 318,
                     "column": 0,
                     "character": 12866
@@ -348873,8 +337649,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -348893,8 +337668,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -348913,13 +337687,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -348944,13 +337716,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -348984,8 +337754,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -349061,13 +337830,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -349082,8 +337849,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -349102,8 +337868,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -349198,13 +337963,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -349296,13 +338059,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -349317,13 +338078,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -349338,13 +338097,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -349359,13 +338116,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -349437,13 +338192,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -349534,13 +338287,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -349574,13 +338325,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -349614,13 +338363,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -349635,13 +338382,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -349941,13 +338686,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -349966,8 +338709,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -349992,13 +338734,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -350013,8 +338753,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -350104,8 +338843,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -350124,8 +338862,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
+                "rule_text": "(std.map [A0 | A1] A2 [A3 | A4]) :- (A2 A0 A3), (std.map A1 A2 A4).",
                 "rule_loc": [
                   "File",
                   {
@@ -350144,13 +338881,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -350175,13 +338910,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -350215,8 +338948,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -350292,13 +339024,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -350313,8 +339043,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -350333,8 +339062,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -350429,13 +339157,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -350527,13 +339253,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -350548,13 +339272,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -350569,13 +339291,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -350590,13 +339310,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -350668,13 +339386,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -350765,13 +339481,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -350805,13 +339519,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -350845,13 +339557,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -350866,13 +339576,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -351172,13 +339880,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -351197,8 +339903,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -351223,13 +339928,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -351244,8 +339947,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -351277,8 +339979,7 @@
       "Inference",
       {
         "current_goal_id": 1776,
-        "current_goal_text":
-          "std.spy\n (std.take 1 \n   [app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0] X230^1)",
+        "current_goal_text": "std.spy\n (std.take 1 \n   [app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0] X230^1)",
         "current_goal_predicate": "std.spy",
         "failed_attempts": [],
         "successful_attempts": [
@@ -351287,8 +339988,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                  "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                   "rule_loc": [
                     "File",
                     {
@@ -351310,23 +340010,19 @@
             "siblings": [
               { "goal_text": "trace.counter run X264^2", "goal_id": 1841 },
               {
-                "goal_text":
-                  "if (not (X264^2 = 0)) (std.debug-print run= X264^2) true",
+                "goal_text": "if (not (X264^2 = 0)) (std.debug-print run= X264^2) true",
                 "goal_id": 1842
               },
               {
-                "goal_text":
-                  "std.debug-print ----<<---- enter:  \n (std.take 1 \n   [app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0] X230^1)",
+                "goal_text": "std.debug-print ----<<---- enter:  \n (std.take 1 \n   [app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0] X230^1)",
                 "goal_id": 1843
               },
               {
-                "goal_text":
-                  "std.take 1 \n [app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1], c0] X230^1",
+                "goal_text": "std.take 1 \n [app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1], c0] X230^1",
                 "goal_id": 1844
               },
               {
-                "goal_text":
-                  "std.debug-print ---->>---- exit:  \n (std.take 1 \n   [app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0] X230^1)",
+                "goal_text": "std.debug-print ---->>---- exit:  \n (std.take 1 \n   [app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0] X230^1)",
                 "goal_id": 1845
               }
             ],
@@ -351339,8 +340035,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -351359,13 +340054,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -351390,13 +340083,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -351430,8 +340121,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -351507,13 +340197,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -351528,8 +340216,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -351548,8 +340235,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -351644,13 +340330,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -351742,13 +340426,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -351763,13 +340445,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -351784,13 +340464,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -351805,13 +340483,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -351883,13 +340559,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -351980,13 +340654,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -352020,13 +340692,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -352060,13 +340730,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -352081,13 +340749,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -352387,13 +341053,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -352412,8 +341076,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -352438,13 +341101,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -352459,8 +341120,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -352516,8 +341176,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -352536,13 +341195,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -352567,13 +341224,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -352607,8 +341262,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -352684,13 +341338,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -352705,8 +341357,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -352725,8 +341376,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -352821,13 +341471,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -352919,13 +341567,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -352940,13 +341586,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -352961,13 +341605,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -352982,13 +341624,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -353060,13 +341700,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -353157,13 +341795,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -353197,13 +341833,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -353237,13 +341871,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -353258,13 +341890,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -353564,13 +342194,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -353589,8 +342217,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -353615,13 +342242,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -353636,8 +342261,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -353698,8 +342322,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -353718,13 +342341,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -353749,13 +342370,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -353789,8 +342408,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -353866,13 +342484,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -353887,8 +342503,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -353907,8 +342522,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -354003,13 +342617,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -354101,13 +342713,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -354122,13 +342732,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -354143,13 +342751,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -354164,13 +342770,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -354242,13 +342846,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -354339,13 +342941,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -354379,13 +342979,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -354419,13 +343017,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -354440,13 +343036,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -354746,13 +343340,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -354771,8 +343363,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -354797,13 +343388,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -354818,8 +343407,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -354910,8 +343498,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -354930,13 +343517,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -354961,13 +343546,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -355001,8 +343584,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -355078,13 +343660,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -355099,8 +343679,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -355119,8 +343698,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -355215,13 +343793,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -355313,13 +343889,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -355334,13 +343908,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -355355,13 +343927,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -355376,13 +343946,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -355454,13 +344022,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -355551,13 +344117,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -355591,13 +344155,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -355631,13 +344193,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -355652,13 +344212,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -355958,13 +344516,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -355983,8 +344539,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -356009,13 +344564,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -356030,8 +344583,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -356138,8 +344690,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -356158,13 +344709,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -356189,13 +344738,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -356229,8 +344776,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -356306,13 +344852,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -356327,8 +344871,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -356347,8 +344890,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -356443,13 +344985,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -356541,13 +345081,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -356562,13 +345100,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -356583,13 +345119,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -356604,13 +345138,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -356682,13 +345214,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -356779,13 +345309,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -356819,13 +345347,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -356859,13 +345385,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -356880,13 +345404,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -357186,13 +345708,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -357211,8 +345731,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -357237,13 +345756,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -357258,8 +345775,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -357353,8 +345869,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -357373,13 +345888,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -357404,13 +345917,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -357444,8 +345955,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -357521,13 +346031,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -357542,8 +346050,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -357562,8 +346069,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -357658,13 +346164,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -357756,13 +346260,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -357777,13 +346279,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -357798,13 +346298,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -357819,13 +346317,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -357897,13 +346393,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -357994,13 +346488,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -358034,13 +346526,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -358074,13 +346564,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -358095,13 +346583,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -358401,13 +346887,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -358426,8 +346910,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -358452,13 +346935,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -358473,8 +346954,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -358585,8 +347065,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -358605,13 +347084,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -358636,13 +347113,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -358676,8 +347151,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -358753,13 +347227,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -358774,8 +347246,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -358794,8 +347265,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -358890,13 +347360,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -358988,13 +347456,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -359009,13 +347475,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -359030,13 +347494,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -359051,13 +347513,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -359129,13 +347589,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -359226,13 +347684,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -359266,13 +347722,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -359306,13 +347760,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -359327,13 +347779,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -359633,13 +348083,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -359658,8 +348106,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -359684,13 +348131,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -359705,8 +348150,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -359790,8 +348234,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -359810,13 +348253,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -359841,13 +348282,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -359881,8 +348320,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -359958,13 +348396,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -359979,8 +348415,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -359999,8 +348434,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -360095,13 +348529,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -360193,13 +348625,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -360214,13 +348644,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -360235,13 +348663,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -360256,13 +348682,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -360334,13 +348758,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -360431,13 +348853,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -360471,13 +348891,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -360511,13 +348929,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -360532,13 +348948,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -360838,13 +349252,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -360863,8 +349275,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -360889,13 +349300,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -360910,8 +349319,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -361014,8 +349422,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -361034,13 +349441,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -361065,13 +349470,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -361105,8 +349508,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -361182,13 +349584,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -361203,8 +349603,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -361223,8 +349622,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -361319,13 +349717,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -361417,13 +349813,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -361438,13 +349832,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -361459,13 +349851,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -361480,13 +349870,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -361558,13 +349946,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -361655,13 +350041,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -361695,13 +350079,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -361735,13 +350117,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -361756,13 +350136,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -362062,13 +350440,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -362087,8 +350463,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -362113,13 +350488,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -362134,8 +350507,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -362167,8 +350539,7 @@
       "Inference",
       {
         "current_goal_id": 1843,
-        "current_goal_text":
-          "std.debug-print ----<<---- enter:  \n (std.take 1 \n   [app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0] X230^1)",
+        "current_goal_text": "std.debug-print ----<<---- enter:  \n (std.take 1 \n   [app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0] X230^1)",
         "current_goal_predicate": "std.debug-print",
         "failed_attempts": [],
         "successful_attempts": [
@@ -362177,8 +350548,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
+                  "rule_text": "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -362201,8 +350571,7 @@
             "siblings": [
               { "goal_text": "!", "goal_id": 1854 },
               {
-                "goal_text":
-                  "coq.say ----<<---- enter:  \n (std.take 1 \n   [app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0] X230^1)",
+                "goal_text": "coq.say ----<<---- enter:  \n (std.take 1 \n   [app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0] X230^1)",
                 "goal_id": 1855
               }
             ],
@@ -362215,8 +350584,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
+                "rule_text": "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -362235,8 +350603,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -362255,13 +350622,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -362286,13 +350651,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -362326,8 +350689,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -362403,13 +350765,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -362424,8 +350784,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -362444,8 +350803,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -362540,13 +350898,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -362638,13 +350994,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -362659,13 +351013,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -362680,13 +351032,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -362701,13 +351051,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -362779,13 +351127,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -362876,13 +351222,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -362916,13 +351260,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -362956,13 +351298,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -362977,13 +351317,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -363283,13 +351621,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -363308,8 +351644,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -363334,13 +351669,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -363355,8 +351688,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -363391,8 +351723,7 @@
         "cut_victims": [
           {
             "cut_branch_for_goal": {
-              "goal_text":
-                "std.debug-print ----<<---- enter:  \n (std.take 1 \n   [app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0] X230^1)",
+              "goal_text": "std.debug-print ----<<---- enter:  \n (std.take 1 \n   [app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0] X230^1)",
               "goal_id": 1843
             },
             "cut_branch": {
@@ -363420,8 +351751,7 @@
       "Inference",
       {
         "current_goal_id": 1855,
-        "current_goal_text":
-          "coq.say ----<<---- enter:  \n (std.take 1 \n   [app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0] X230^1)",
+        "current_goal_text": "coq.say ----<<---- enter:  \n (std.take 1 \n   [app\n     [global\n       (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n      c0, c1], c0] X230^1)",
         "current_goal_predicate": "coq.say",
         "failed_attempts": [],
         "successful_attempts": [
@@ -363445,8 +351775,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
+                "rule_text": "(std.debug-print A0 A1) :- (!), (coq.say A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -363465,8 +351794,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -363485,13 +351813,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -363516,13 +351842,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -363556,8 +351880,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -363633,13 +351956,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -363654,8 +351975,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -363674,8 +351994,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -363770,13 +352089,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -363868,13 +352185,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -363889,13 +352204,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -363910,13 +352223,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -363931,13 +352242,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -364009,13 +352318,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -364106,13 +352413,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -364146,13 +352451,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -364186,13 +352489,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -364207,13 +352508,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -364513,13 +352812,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -364538,8 +352835,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -364564,13 +352860,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -364585,8 +352879,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -364618,16 +352911,14 @@
       "Inference",
       {
         "current_goal_id": 1844,
-        "current_goal_text":
-          "std.take 1 \n [app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1], c0] X230^1",
+        "current_goal_text": "std.take 1 \n [app\n   [global\n     (const «Builders_18.Builders_18_T__canonical__interleave_context_A»), \n    c0, c1], c0] X230^1",
         "current_goal_predicate": "std.take",
         "failed_attempts": [
           {
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.take _ _ _) :- (std.fatal-error take run out of list items).",
+                "rule_text": "(std.take _ _ _) :- (std.fatal-error take run out of list items).",
                 "rule_loc": [
                   "File",
                   {
@@ -364648,8 +352939,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.take A0 [A1 | A2] [A1 | A3]) :- (!), (A4 is A0 - 1), \n (std.take A4 A2 A3).",
+                  "rule_text": "(std.take A0 [A1 | A2] [A1 | A3]) :- (!), (A4 is A0 - 1), \n (std.take A4 A2 A3).",
                   "rule_loc": [
                     "File",
                     {
@@ -364689,8 +352979,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.take A0 [A1 | A2] [A1 | A3]) :- (!), (A4 is A0 - 1), \n (std.take A4 A2 A3).",
+                "rule_text": "(std.take A0 [A1 | A2] [A1 | A3]) :- (!), (A4 is A0 - 1), \n (std.take A4 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -364709,8 +352998,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -364729,13 +353017,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -364760,13 +353046,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -364800,8 +353084,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -364877,13 +353160,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -364898,8 +353179,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -364918,8 +353198,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -365014,13 +353293,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -365112,13 +353389,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -365133,13 +353408,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -365154,13 +353427,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -365175,13 +353446,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -365253,13 +353522,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -365350,13 +353617,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -365390,13 +353655,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -365430,13 +353693,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -365451,13 +353712,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -365757,13 +354016,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -365782,8 +354039,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -365808,13 +354064,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -365829,8 +354083,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -365920,8 +354173,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.take A0 [A1 | A2] [A1 | A3]) :- (!), (A4 is A0 - 1), \n (std.take A4 A2 A3).",
+                "rule_text": "(std.take A0 [A1 | A2] [A1 | A3]) :- (!), (A4 is A0 - 1), \n (std.take A4 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -365940,8 +354192,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -365960,13 +354211,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -365991,13 +354240,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -366031,8 +354278,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -366108,13 +354354,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -366129,8 +354373,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -366149,8 +354392,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -366245,13 +354487,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -366343,13 +354583,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -366364,13 +354602,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -366385,13 +354621,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -366406,13 +354640,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -366484,13 +354716,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -366581,13 +354811,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -366621,13 +354849,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -366661,13 +354887,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -366682,13 +354906,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -366988,13 +355210,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -367013,8 +355233,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -367039,13 +355258,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -367060,8 +355277,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -367131,8 +355347,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(stop A0) :- (get-option ltac:fail A1), (!), (coq.ltac.fail A1 A0).",
+                "rule_text": "(stop A0) :- (get-option ltac:fail A1), (!), (coq.ltac.fail A1 A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -367171,8 +355386,7 @@
               { "goal_text": "get-option ltac:fail X265^2", "goal_id": 1859 },
               { "goal_text": "!", "goal_id": 1860 },
               {
-                "goal_text":
-                  "coq.ltac.fail X265^2 take run out of list items",
+                "goal_text": "coq.ltac.fail X265^2 take run out of list items",
                 "goal_id": 1861
               }
             ],
@@ -367223,8 +355437,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.take A0 [A1 | A2] [A1 | A3]) :- (!), (A4 is A0 - 1), \n (std.take A4 A2 A3).",
+                "rule_text": "(std.take A0 [A1 | A2] [A1 | A3]) :- (!), (A4 is A0 - 1), \n (std.take A4 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -367243,8 +355456,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -367263,13 +355475,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -367294,13 +355504,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -367334,8 +355542,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -367411,13 +355618,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -367432,8 +355637,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -367452,8 +355656,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -367548,13 +355751,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -367646,13 +355847,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -367667,13 +355866,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -367688,13 +355885,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -367709,13 +355904,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -367787,13 +355980,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -367884,13 +356075,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -367924,13 +356113,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -367964,13 +356151,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -367985,13 +356170,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -368291,13 +356474,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -368316,8 +356497,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -368342,13 +356522,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -368363,8 +356541,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -368444,8 +356621,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.take A0 [A1 | A2] [A1 | A3]) :- (!), (A4 is A0 - 1), \n (std.take A4 A2 A3).",
+                "rule_text": "(std.take A0 [A1 | A2] [A1 | A3]) :- (!), (A4 is A0 - 1), \n (std.take A4 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -368464,8 +356640,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -368484,13 +356659,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -368515,13 +356688,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -368555,8 +356726,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -368632,13 +356802,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -368653,8 +356821,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -368673,8 +356840,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -368769,13 +356935,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -368867,13 +357031,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -368888,13 +357050,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -368909,13 +357069,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -368930,13 +357088,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -369008,13 +357164,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -369105,13 +357259,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -369145,13 +357297,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -369185,13 +357335,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -369206,13 +357354,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -369512,13 +357658,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -369537,8 +357681,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -369563,13 +357706,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -369584,8 +357725,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
@@ -369693,8 +357833,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.take A0 [A1 | A2] [A1 | A3]) :- (!), (A4 is A0 - 1), \n (std.take A4 A2 A3).",
+                "rule_text": "(std.take A0 [A1 | A2] [A1 | A3]) :- (!), (A4 is A0 - 1), \n (std.take A4 A2 A3).",
                 "rule_loc": [
                   "File",
                   {
@@ -369713,8 +357852,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
+                "rule_text": "(std.spy A0) :- (trace.counter run A1), \n (if (not (A1 = 0)) (std.debug-print run= A1) true), \n (std.debug-print ----<<---- enter:  A0), A0, \n (std.debug-print ---->>---- exit:  A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -369733,13 +357871,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c2 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -369764,13 +357900,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
+                "rule_text": "(extract-conclusion-params A0 (prod _ A1 A2) A3) :- (!), \n (pi (c1 \\ (decl c0 _ A1 => extract-conclusion-params A0 (A2 c0) A3))).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 115,
                     "column": 0,
                     "character": 3974
@@ -369804,8 +357938,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
+                "rule_text": "(std.assert! A0 A1) :- (A0 ; std.fatal-error-w-data A1 A0), (!).",
                 "rule_loc": [
                   "File",
                   {
@@ -369881,13 +358014,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
+                "rule_text": "(factory-provides.one A0 A1 A2 A3 (triple A3 A4 A1)) :- (std.do!\n                                                          [std.assert-ok!\n                                                            (coq.typecheck\n                                                              A2 A5) \n                                                            Builder illtyped, \n                                                           (coq.subst-prod\n                                                             A0 A5 A7 ,\n                                                             coq.subst-prod\n                                                              [A1] A7 A6), \n                                                           std.assert!\n                                                            (extract-conclusion-params\n                                                              A1 A6 A4) \n                                                            The conclusion of a builder is a mixin whose parameters depend on other mixins]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 108,
                     "column": 0,
                     "character": 3601
@@ -369902,8 +358033,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -369922,8 +358052,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
+                "rule_text": "(std.map2 [A0 | A1] [A2 | A3] A4 [A5 | A6]) :- (A4 A0 A2 A5), \n (std.map2 A1 A3 A4 A6).",
                 "rule_loc": [
                   "File",
                   {
@@ -370018,13 +358147,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
+                "rule_text": "(factory-provides.base A0 A1 A2 _ A3) :- (std.do!\n                                           [std.findall (from A0 A4 A5) A6, \n                                            std.map A6 from_mixin A7, \n                                            std.map A6 from_builder A8, \n                                            std.map2 A8 A7 \n                                             (factory-provides.one A1 A2) A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 3290
@@ -370116,13 +358243,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
+                "rule_text": "(w-params.fold.params (w-params.nil A0 A1 A2) _ A3 A4 A5) :- (!), \n (std.do! [coq.id->name A0 A6, std.rev A4 A7, A3 A7 A6 A1 A2 A5]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 224,
                     "column": 0,
                     "character": 8609
@@ -370137,13 +358262,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
+                "rule_text": "(w-params.fold A0 A1 A2 A3) :- (w-params.fold.params A0 A1 A2 [] A3).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 213,
                     "column": 0,
                     "character": 8143
@@ -370158,13 +358281,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
+                "rule_text": "(w-params.then A0 A1 A2 A3 A4) :- (w-params.fold A0 A1 (c0 \\ (c1 \\ (c2 \\\n                                    (c3 \\ (c4 \\\n                                    (sigma (c5 \\\n                                      (pi (c6 \\\n                                        (decl c6 c1 c2 =>\n                                          A3 c0 c6 (c3 c6) (c5 c6))) ,\n                                        A2 c1 c2 c5 c4)))))))) A4).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 239,
                     "column": 0,
                     "character": 9183
@@ -370179,13 +358300,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
+                "rule_text": "(w-params.map A0 A1 A2) :- (w-params.then A0 mk-w-params.cons-name \n                             mk-w-params.nil-name A1 A2).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 245,
                     "column": 0,
                     "character": 9440
@@ -370257,13 +358376,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
+                "rule_text": "(factory-provides A0 A1) :- (std.do!\n                              [factory-alias->gref A0 A2, gref-deps A2 A3, \n                               w-params.map A3 (factory-provides.base A2) A1]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/database.elpi",
                     "line": 86,
                     "column": 0,
                     "character": 2829
@@ -370354,13 +358471,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
+                "rule_text": "(synthesis.private.factory-instance->new-mixins A0 A1 A2) :- (std.do!\n                                                               [std.assert-ok!\n                                                                 (coq.typecheck\n                                                                   A1 A3) \n                                                                 mixin-src: X illtyped, \n                                                                if\n                                                                 (not\n                                                                   (coq.safe-dest-app\n                                                                    A3 \n                                                                    (global _) \n                                                                    _)) \n                                                                 (,\n                                                                   (coq.term->string\n                                                                    A1 A7) \n                                                                   (coq.term->string\n                                                                    A3 A8) \n                                                                   (coq.error\n                                                                    Term:\n \n                                                                    A7 \n                                                                    \nhas type:\n \n                                                                    A8 \n                                                                    \nwhich is not a record)) \n                                                                 true, \n                                                                coq.term->gref\n                                                                 A3 A4, \n                                                                factory-provides\n                                                                 A4 A5, \n                                                                list-w-params_list\n                                                                 A5 A6, \n                                                                std.filter\n                                                                 A6 (c0 \\\n                                                                 (not\n                                                                   (std.mem!\n                                                                    A0 c0))) \n                                                                 A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 12694
@@ -370394,13 +358509,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
+                "rule_text": "(synthesis.under-mixin-src-from-factory.do! A0 A1 A2) :- (std.do!\n                                                           [synthesis.private.factory-instance->new-mixins\n                                                             [] A1 A3, \n                                                            std.map A3 (c0 \\\n                                                             (c1 \\\n                                                             (c1 =\n                                                               mixin-src A0 \n                                                                c0 A1))) A4, \n                                                            A4 => std.do! A2]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/synthesis.elpi",
                     "line": 100,
                     "column": 0,
                     "character": 4390
@@ -370434,13 +358547,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
+                "rule_text": "(instance.private.declare-canonical-instances-from-factory A0 A1 A2 A3) :- (\n std.do!\n  [synthesis.under-mixin-src-from-factory.do! A1 A2 \n    [synthesis.under-local-canonical-mixins-of.do! A1 \n      [(factory-provides A0 A7 , list-w-params_list A7 A4), \n       instance.private.add-all-mixins A1 A0 A4 tt _ A5, \n       (findall-classes-for A4 A8 , instance.declare-all A1 A8 A6)]], \n   std.append A5 A6 A3]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 282,
                     "column": 0,
                     "character": 12180
@@ -370455,13 +358566,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
+                "rule_text": "(instance.private.declare-instance A0 A1 A2 A3 A4) :- (instance.private.declare-canonical-instances-from-factory\n                                                        A0 A1 A2 A4), \n (if (get-option export tt) \n   (coq.env.current-library A5 ,\n     std.map A4 (c0 \\ (c1 \\\n      (sigma (c2 \\\n        (sigma (c3 \\ (c0 = pr c2 c3 , c1 = instance-to-export A5 c2 c3))))))) \n      A3) (A3 = [])).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 196,
                     "column": 0,
                     "character": 8410
@@ -370761,13 +358870,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
+                "rule_text": "(instance.declare-const A0 A1 A2 A3) :- (std.do!\n                                          [std.assert-ok!\n                                            (coq.elaborate-arity-skeleton A2 \n                                              _ A4) Definition type illtyped, \n                                           coq.arity->term A4 A5, \n                                           std.assert-ok!\n                                            (coq.elaborate-skeleton A1 A5 A6) \n                                            Definition illtyped, \n                                           if (A4 = arity A7) \n                                            (if-verbose\n                                              (coq.say\n                                                HB: skipping section opening)\n                                              , A8 = A6) \n                                            (,\n                                              (, (new_int A21) \n                                                (std.any->string A21 A22) \n                                                (A9 is hb_instance_ ^ A22)) \n                                              (log.coq.env.begin-section A9) \n                                              (instance.private.postulate-arity\n                                                A4 [] A6 A8 A7)), \n                                           std.assert!\n                                            (coq.safe-dest-app A7 \n                                              (global A10) A11) \n                                            The type of the instance is not a factory, \n                                           factory-alias->gref A10 A12, \n                                           std.assert!\n                                            (factory-nparams A12 A13) \n                                            Not a factory synthesized by HB, \n                                           instance.private.hack-section-discharging\n                                            A8 A14, \n                                           instance.private.optimize-body\n                                            A14 A15, \n                                           if (A0 = _) \n                                            (, (new_int A23) \n                                              (std.any->string A23 A24) \n                                              (A16 is\n                                                HB_unnamed_factory_ ^ A24)) \n                                            (A16 = A0), \n                                           log.coq.env.add-const-noimplicits-failondup\n                                            A16 A15 A7 ff A17, \n                                           A18 = global (const A17), \n                                           std.drop A13 A11 [A19 | _], \n                                           instance.private.check-non-forgetful-inheritance\n                                            A19 A12, \n                                           instance.private.declare-instance\n                                            A12 A19 A18 A20 A3, \n                                           if (A4 = arity _) true \n                                            (if-verbose\n                                              (header A25 ,\n                                                coq.say A25 \n                                                 closing instance section) ,\n                                              log.coq.env.end-section-name A9), \n                                           acc-clauses current A20]).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/instance.elpi",
                     "line": 25,
                     "column": 0,
                     "character": 1064
@@ -370786,8 +358893,7 @@
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/log.elpi",
                     "line": 289,
                     "column": 0,
                     "character": 11419
@@ -370812,13 +358918,11 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
+                "rule_text": "(with-attributes A0) :- (attributes A1), \n (pi (c0 \\\n   (pi (c1 \\\n     (pi (c2 \\\n       (pi (c3 \\\n         (pi (c4 \\\n           (pi (c5 \\\n             (pi (c6 \\\n               (pi (c7 \\\n                 (parse-attributes.aux [attribute c0 (node c1) | c2] c3 c4 :-\n                   , (if (c3 = ) (c7 = c0) (c7 is c3 ^ . ^ c0)) \n                    (supported-attribute (att c7 attmap)) (!) \n                    (parse-attributes.aux c2 c3 c5) \n                    (pi (c8 \\ (supported-attribute (att c8 string) :- !)) =>\n                      parse-attributes.aux c1  c6) \n                    (std.append c5 [get-option c7 c6] c4))))))))))))))))) =>\n   coq.parse-attributes A1 \n    [att verbose bool, att mathcomp bool, att mathcomp.axiom string, \n     att short.type string, att short.pack string, att infer attmap, \n     att key string, att arg_sort bool, att log bool, att log.raw bool, \n     att compress_coercions bool, att export bool, att skip string, \n     att local bool, att fail bool, att doc string, \n     att primitive_class bool, att primitive bool, \n     att non_forgetful_inheritance bool, att hnf bool] A2), (!), \n (A2 => (save-docstring , A0)).",
                 "rule_loc": [
                   "File",
                   {
-                    "filename":
-                      "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
+                    "filename": "/home/gares/MATHCOMP/hierarchy-builder/HB/common/utils.elpi",
                     "line": 14,
                     "column": 0,
                     "character": 453
@@ -370833,8 +358937,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
+                "rule_text": "(main [const-decl A0 (some A1) A2]) :- (!), \n (with-attributes (with-logging (instance.declare-const A0 A1 A2 _))).",
                 "rule_loc": [
                   "File",
                   {
diff --git a/tests/sources/trace.elab.json b/tests/sources/trace.elab.json
index 732f1cec..a4127fac 100644
--- a/tests/sources/trace.elab.json
+++ b/tests/sources/trace.elab.json
@@ -271,8 +271,7 @@
                 }
               ],
               "events": [
-                [ "Assign", "A0 := 1" ],
-                [ "Assign", "A1 := 2 + 3" ]
+                [ "Assign", "A0 := 1" ], [ "Assign", "A1 := 2 + 3" ]
               ]
             },
             "siblings": [ { "goal_text": "calc (2 + 3) 1", "goal_id": 8 } ],
diff --git a/tests/sources/trace2.elab.json b/tests/sources/trace2.elab.json
index 9c00563e..c53c205b 100644
--- a/tests/sources/trace2.elab.json
+++ b/tests/sources/trace2.elab.json
@@ -21,8 +21,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
+                  "rule_text": "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
                   "rule_loc": [
                     "File",
                     {
@@ -52,8 +51,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
+                "rule_text": "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
                 "rule_loc": [
                   "File",
                   {
@@ -104,8 +102,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
+                "rule_text": "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
                 "rule_loc": [
                   "File",
                   {
@@ -161,8 +158,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
+                "rule_text": "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
                 "rule_loc": [
                   "File",
                   {
@@ -220,8 +216,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
+                "rule_text": "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
                 "rule_loc": [
                   "File",
                   {
@@ -282,8 +277,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
+                "rule_text": "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
                 "rule_loc": [
                   "File",
                   {
@@ -352,8 +346,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
+                "rule_text": "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
                 "rule_loc": [
                   "File",
                   {
@@ -452,8 +445,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
+                "rule_text": "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
                 "rule_loc": [
                   "File",
                   {
@@ -530,8 +522,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
+                "rule_text": "main :- (print 1), (pi (c0 \\ (sigma (c1 \\ (fail => (true , fail)))))).",
                 "rule_loc": [
                   "File",
                   {
diff --git a/tests/sources/trace_chr.elab.json b/tests/sources/trace_chr.elab.json
index f18c236c..0b8b977e 100644
--- a/tests/sources/trace_chr.elab.json
+++ b/tests/sources/trace_chr.elab.json
@@ -21,8 +21,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
+                  "rule_text": "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
                   "rule_loc": [
                     "File",
                     {
@@ -51,8 +50,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
+                "rule_text": "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
                 "rule_loc": [
                   "File",
                   {
@@ -88,8 +86,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
+                  "rule_text": "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
                   "rule_loc": [
                     "File",
                     {
@@ -118,8 +115,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
+                "rule_text": "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -138,8 +134,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
+                "rule_text": "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
                 "rule_loc": [
                   "File",
                   {
@@ -178,8 +173,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
+                "rule_text": "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -198,8 +192,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
+                "rule_text": "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
                 "rule_loc": [
                   "File",
                   {
@@ -238,8 +231,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
+                "rule_text": "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
                 "rule_loc": [
                   "File",
                   {
@@ -274,8 +266,7 @@
             "attempt": {
               "rule": [ "BuiltinRule", [ "Logic", "eq" ] ],
               "events": [
-                [ "Assign", "X0 := s X1" ],
-                [ "ResumeGoal", [ 11, 10 ] ]
+                [ "Assign", "X0 := s X1" ], [ "ResumeGoal", [ 11, 10 ] ]
               ]
             },
             "siblings": [],
@@ -293,8 +284,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
+                "rule_text": "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
                 "rule_loc": [
                   "File",
                   {
@@ -395,8 +385,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
+                "rule_text": "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
                 "rule_loc": [
                   "File",
                   {
@@ -485,8 +474,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
+                "rule_text": "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -505,8 +493,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
+                "rule_text": "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
                 "rule_loc": [
                   "File",
                   {
@@ -542,8 +529,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(odd (as uvar A0)) :- (declare_constraint (odd A0) A0).",
+                  "rule_text": "(odd (as uvar A0)) :- (declare_constraint (odd A0) A0).",
                   "rule_loc": [
                     "File",
                     {
@@ -572,8 +558,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(odd (as uvar A0)) :- (declare_constraint (odd A0) A0).",
+                "rule_text": "(odd (as uvar A0)) :- (declare_constraint (odd A0) A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -621,8 +606,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
+                "rule_text": "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -641,8 +625,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
+                "rule_text": "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
                 "rule_loc": [
                   "File",
                   {
@@ -681,8 +664,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(odd (as uvar A0)) :- (declare_constraint (odd A0) A0).",
+                "rule_text": "(odd (as uvar A0)) :- (declare_constraint (odd A0) A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -730,8 +712,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
+                "rule_text": "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -750,8 +731,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
+                "rule_text": "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
                 "rule_loc": [
                   "File",
                   {
@@ -834,8 +814,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
+                "rule_text": "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
                 "rule_loc": [
                   "File",
                   {
@@ -871,8 +850,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
+                  "rule_text": "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
                   "rule_loc": [
                     "File",
                     {
@@ -901,8 +879,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
+                "rule_text": "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -940,8 +917,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
+                "rule_text": "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
                 "rule_loc": [
                   "File",
                   {
@@ -980,8 +956,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
+                "rule_text": "(even (as uvar A0)) :- (declare_constraint (even A0) A0).",
                 "rule_loc": [
                   "File",
                   {
@@ -1019,8 +994,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
+                "rule_text": "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
                 "rule_loc": [
                   "File",
                   {
@@ -1097,8 +1071,7 @@
                   "step_id": 0,
                   "runtime_id": 2,
                   "step": [
-                    "Init",
-                    { "goal_text": "odd (s z)", "goal_id": 23 }
+                    "Init", { "goal_text": "odd (s z)", "goal_id": 23 }
                   ],
                   "color": "Grey"
                 },
@@ -1122,8 +1095,7 @@
                                 "rule_loc": [
                                   "File",
                                   {
-                                    "filename":
-                                      "tests/sources/trace_chr.elpi",
+                                    "filename": "tests/sources/trace_chr.elpi",
                                     "line": 13,
                                     "column": 0,
                                     "character": 209
@@ -1185,8 +1157,7 @@
                                 "rule_loc": [
                                   "File",
                                   {
-                                    "filename":
-                                      "tests/sources/trace_chr.elpi",
+                                    "filename": "tests/sources/trace_chr.elpi",
                                     "line": 11,
                                     "column": 0,
                                     "character": 200
@@ -1374,8 +1345,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
+                "rule_text": "main :- (even A0), (declare_constraint true A0), (A0 = s A1), \n (not (even A1)).",
                 "rule_loc": [
                   "File",
                   {
diff --git a/tests/sources/trace_findall.elab.json b/tests/sources/trace_findall.elab.json
index f96f0bd6..9f521bd1 100644
--- a/tests/sources/trace_findall.elab.json
+++ b/tests/sources/trace_findall.elab.json
@@ -84,8 +84,7 @@
               "rule": [
                 "UserRule",
                 {
-                  "rule_text":
-                    "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                  "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                   "rule_loc": [
                     "File",
                     {
@@ -98,8 +97,7 @@
                 }
               ],
               "events": [
-                [ "Assign", "A0 := p _" ],
-                [ "Assign", "A1 := X0" ]
+                [ "Assign", "A0 := p _" ], [ "Assign", "A1 := X0" ]
               ]
             },
             "siblings": [
@@ -114,8 +112,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                 "rule_loc": [
                   "File",
                   {
@@ -440,8 +437,7 @@
             "rule": [
               "UserRule",
               {
-                "rule_text":
-                  "(std.findall A0 A1) :- (findall_solutions A0 A1).",
+                "rule_text": "(std.findall A0 A1) :- (findall_solutions A0 A1).",
                 "rule_loc": [
                   "File",
                   {

From 03c518ed18600d15b32a737a1a61a0d991a7de61 Mon Sep 17 00:00:00 2001
From: Julien Puydt <julien.puydt <at> gmail.com>
Date: Tue, 25 Oct 2022 10:25:41 +0200
Subject: [PATCH 2/2] Tighten the dependency on atd in elpi.opam

---
 elpi.opam | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/elpi.opam b/elpi.opam
index 0421d9f9..0ab0267b 100644
--- a/elpi.opam
+++ b/elpi.opam
@@ -25,8 +25,8 @@ depends: [
   "cmdliner" {with-test}
   "dune" {>= "2.8.0"}
   "conf-time" {with-test}
-  "atdgen" {>= "2.9.1" & < "2.10.0"}
-  "atdts" {>= "2.9.1" & < "2.10.0"}
+  "atdgen" {>= "2.10.0"}
+  "atdts" {>= "2.10.0"}
   "odoc" {with-doc}
 ]
 depopts: [

This bug report was last modified 2 years and 218 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.